接收别人的老代码,发现灵异事件。。。。 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
jxf2008
V2EX    Android

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

  •  
  •   jxf2008 2019-03-27 15:45:48 +08:00 14432 次点击
    这是一个创建于 2415 天前的主题,其中的信息可能已经有所发展或是发生改变。
    一个类 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     Solana     1345 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 26ms UTC 16:58 PVG 00:58 LAX 08:58 JFK 11:58
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86