首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  Android

接收别人的老代码,发现灵异事件。。。。

  •  
  •   jxf2008 · 202 天前 · 3437 次点击
    这是一个创建于 202 天前的主题,其中的信息可能已经有所发展或是发生改变。
    一个类 A,继承自 RecyclerView.ViewHolder,他是
    public class MyTimeAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> 类的内部类

    然后这个 A 类有个奇怪的类成员 pTimeView。。
    在 MyTimeAdapter 里,有如下代码
    textHolder.pTimeView.setTextColor(Color.WHITE);

    可以看出 pTimeView 是 A 类的一个成员,但我搜索整个文件,也找不到这个 pTimeView 初始化的地方,我用 ctrl+f12 查看了整个类的结构,确定这个文件的类和内部类都没有 pTimeView 这个成员,另外这个文件的两个类都不是继承自自定义类,所以可以排除 pTimeView 来自父类的可能

    AndroidStudio3.1 有什么办法找到这个变量初始化的地方?

    又:如果这个问题比较初级,请大家不要喷我,上个月公司安卓开发和公司打官司跑路,我一个连 JAVA 都不会的人被找来接收这个安卓项目。。。
    23 回复  |  直到 2019-04-10 11:57:38 +08:00
        1
    albertofwb   202 天前
    有可能 pTimeView 这个成员本来就没啥用
        2
    Dori   202 天前
    看下它初始化的地方应该是个思路 MyTimeAdapter
        3
    jxf2008   202 天前
    @albertofwb
    有用
    LayoutInflater inflater = (LayoutInflater)pTimeView.getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);

    不少代码里有他,比如上面一句

    @Dori
    全文件查找没找到,Ctrl+F12 查找类结构也没找到
    这两个操作我反复检查过,确定没眼花
        4
    pynix   202 天前
    这么说应该来自父类无疑。。。
        5
    jxf2008   202 天前
    @pynix
    但问题是文件里的类继承自 RecyclerView.Adapter<RecyclerView.ViewHolder>
    内部类 A
    public class A extends RecyclerView.ViewHolder

    确定不是自定义类。。
        6
    eminemcola   202 天前
    贴代码吧。
        7
    jxf2008   202 天前
    @eminemcola
    if (pTimeView.getTag() == null || !(pTimeView.getTag() instanceof FtgTime.MsgLog))
    return;

    LayoutInflater inflater = (LayoutInflater)pTimeView.getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);

    这是相关的代码,只能贴这么多了,保密项目。。。还有 V2 怎么嵌入代码。。
        8
    saucew   202 天前
    是不是用了 butterknife 有没有 @bindview 这种东西
        9
    Dori   202 天前
    ```
    在 MyTimeAdapter 里,有如下代码
    textHolder.pTimeView.setTextColor(Color.WHITE);
    可以看出 pTimeView 是 A 类的一个成员
    ```

    我倒是觉得 pTimeView 是 RecyclerView.ViewHolder 的类成员,看下怎么实例化的吧
        10
    jxf2008   202 天前
    @saucew
    有,但我确定 A 类里面没有这个 pTimeView
    Ctrl+F12 查看类结构也显示没有这个类成员


    @Dori
    关键我找不到 pTimeView 初始化的地方,AndroidStudio 有没有这个功能?因为我做 C++,用 VS 一个类成员可以直接找到申明或定义的地方
        11
    nicevar   202 天前
    如果没有声明的地方,或者没有注解之类的生成代码,pTimeView 在 AS 肯定会报错的,你直接右击 pTimeView 选择 Goto->Declaration 呢
        12
    darktiny   202 天前
    #8 正解,楼主了解下 https://github.com/JakeWharton/butterknife
        13
    hellormrfool   202 天前
    CTRL + H 搜索,然后循迹
        14
    jxf2008   202 天前
    @nicevar
    @pynix
    @Dori
    @saucew
    抱歉,因为保密项目,貌似闹乌龙了。。。pTimeView 真名是 itemView,他貌似是 ViewHolder 的一个类成员,这家伙是干啥的。。
        15
    iamdennisme   202 天前
    @jxf2008 但是我真的没看懂,求解析下
        16
    pynix   202 天前
    @jxf2008 感觉你是来抖机灵的,,,

    我记得成员是可以 go to definition 的。。
    如果不是成员,一定会报错,,,,
        17
    nicevar   202 天前
    楼主这玩笑开的,还好是在 v 站,同事的话可能被被打。。。
        18
    jxf2008   202 天前
    @pynix
    @nicevar
    么办法,我一个月前连 JAVA 都不会。。。现在接手安卓开发。。
    被打不至于,公司原来安卓开发的人删库跑路,还在和公司打官司呢,留下烂摊子,我不去打他已经很佛系了。。。
        19
    lecoo   202 天前
    鼠标->项目目录->右键->find in Path ,输入 pTimeView, 在 in project / module /scope 几个 tab 之间切换看看,只要这个变量存在,必然可以搜索出来。
        20
    felixlong   202 天前 via Android
    😄。真有删库跑路的程序员?
        21
    jxf2008   202 天前
    @felixlong
    两个 APP,其中一个完全跑不起来了,现在我接手的貌似还能抢救下
    去年下半年开始他上传 SVN 的都是不能编译的版本,然后写的代码都自己保存在本地
    因为他发给测试的 APP 都是正常的,也没人管他 SVN 更新的代码是不是正确的
    我接收的版本还是去年 4 月份更新的,4 月份更新后的所有版本都编译不通过
    打官司 ing...
        22
    HangoX   200 天前
    AS 对着这个 pTimeView 右键找引用,下面会找出赋值的地方
        23
    benjyair   188 天前
    这都是 Android 通用的代码,没什么保密的
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   1118 人在线   最高记录 5043   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 29ms · UTC 18:35 · PVG 02:35 · LAX 11:35 · JFK 14:35
    ♥ Do have faith in what you're doing.