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

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

  •  
  •   jxf2008 · 2019-03-27 15:45:48 +08:00 · 11124 次点击
    这是一个创建于 2069 天前的主题,其中的信息可能已经有所发展或是发生改变。
    一个类 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
    albertofwb
        1
    albertofwb  
       2019-03-27 15:51:33 +08:00
    有可能 pTimeView 这个成员本来就没啥用
    Dori
        2
    Dori  
       2019-03-27 15:54:25 +08:00
    看下它初始化的地方应该是个思路 MyTimeAdapter
    jxf2008
        3
    jxf2008  
    OP
       2019-03-27 16:02:18 +08:00
    @albertofwb
    有用
    LayoutInflater inflater = (LayoutInflater)pTimeView.getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);

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

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

    确定不是自定义类。。
    eminemcola
        6
    eminemcola  
       2019-03-27 16:11:27 +08:00
    贴代码吧。
    jxf2008
        7
    jxf2008  
    OP
       2019-03-27 16:17:54 +08:00
    @eminemcola
    if (pTimeView.getTag() == null || !(pTimeView.getTag() instanceof FtgTime.MsgLog))
    return;

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

    这是相关的代码,只能贴这么多了,保密项目。。。还有 V2 怎么嵌入代码。。
    saucew
        8
    saucew  
       2019-03-27 16:39:38 +08:00
    是不是用了 butterknife 有没有 @bindview 这种东西
    Dori
        9
    Dori  
       2019-03-27 16:42:07 +08:00
    ```
    在 MyTimeAdapter 里,有如下代码
    textHolder.pTimeView.setTextColor(Color.WHITE);
    可以看出 pTimeView 是 A 类的一个成员
    ```

    我倒是觉得 pTimeView 是 RecyclerView.ViewHolder 的类成员,看下怎么实例化的吧
    jxf2008
        10
    jxf2008  
    OP
       2019-03-27 16:49:03 +08:00
    @saucew
    有,但我确定 A 类里面没有这个 pTimeView
    Ctrl+F12 查看类结构也显示没有这个类成员


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

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