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

2019-03-27 15:45:48 +08:00
 jxf2008
一个类 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 都不会的人被找来接收这个安卓项目。。。
11649 次点击
所在节点    Android
23 条回复
albertofwb
2019-03-27 15:51:33 +08:00
有可能 pTimeView 这个成员本来就没啥用
Dori
2019-03-27 15:54:25 +08:00
看下它初始化的地方应该是个思路 MyTimeAdapter
jxf2008
2019-03-27 16:02:18 +08:00
@albertofwb
有用
LayoutInflater inflater = (LayoutInflater)pTimeView.getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);

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

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

确定不是自定义类。。
eminemcola
2019-03-27 16:11:27 +08:00
贴代码吧。
jxf2008
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
2019-03-27 16:39:38 +08:00
是不是用了 butterknife 有没有 @bindview 这种东西
Dori
2019-03-27 16:42:07 +08:00
```
在 MyTimeAdapter 里,有如下代码
textHolder.pTimeView.setTextColor(Color.WHITE);
可以看出 pTimeView 是 A 类的一个成员
```

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


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

我记得成员是可以 go to definition 的。。
如果不是成员,一定会报错,,,,
nicevar
2019-03-27 17:15:52 +08:00
楼主这玩笑开的,还好是在 v 站,同事的话可能被被打。。。
jxf2008
2019-03-27 17:21:11 +08:00
@pynix
@nicevar
么办法,我一个月前连 JAVA 都不会。。。现在接手安卓开发。。
被打不至于,公司原来安卓开发的人删库跑路,还在和公司打官司呢,留下烂摊子,我不去打他已经很佛系了。。。
lecoo
2019-03-27 17:26:04 +08:00
鼠标->项目目录->右键->find in Path ,输入 pTimeView, 在 in project / module /scope 几个 tab 之间切换看看,只要这个变量存在,必然可以搜索出来。
felixlong
2019-03-27 17:26:23 +08:00
😄。真有删库跑路的程序员?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/549163

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX