这个java代码中的timerSeekBar是啥对象或变量?啥是findViewById,

Posted

技术标签:

【中文标题】这个java代码中的timerSeekBar是啥对象或变量?啥是findViewById,【英文标题】:What is timerSeekBar in this java code an object or variable?What is findViewById,这个java代码中的timerSeekBar是什么对象或变量?什么是findViewById, 【发布时间】:2017-10-11 10:22:29 【问题描述】:

我检查了findViewById 是一个方法,那么timerSeekBar 是什么,一个对象或一个variable,被告知它是一个变量,但我们正在用它调用方法,所以它不应该是一个对象。请解释为什么我们在findViewById之前写SeekBar

SeekBar -Class,findViewById- Method ?,timerSeekBar- variable or object?

SeekBar timerSeekBar = (SeekBar)findViewById(R.id.timerSeekBar);

timerSeekBar.setMax(600);
timerSeekBar.setProgress(30);

另一个例子-

TextView answerLabel = (TextView) findViewById(R.id.button1);

【问题讨论】:

【参考方案1】:

findViewById 方法返回一个实际用于在 XML 文件中定义该视图的类的实例。 (Seekbar) 用于使用特定视图投射该视图。

您必须将其 (findViewById) 转换为在使用变量时定义的类。 所以,这就是

SeekBar timerSeekBar = (SeekBar)findViewById(R.id.timerSeekBar);

从 API 26 开始,findViewById 对其返回类型使用推理,因此您不再需要强制转换。

请查看以下参考链接: https://android.googlesource.com/platform/frameworks/base/+/master/core/java/android/widget/SeekBar.java

https://android.googlesource.com/platform/frameworks/base.git/+/android-4.2.1_r1/core/java/android/widget/AbsSeekBar.java

https://android.googlesource.com/platform/frameworks/base/+/master/core/java/android/widget/ProgressBar.java

ProgressBar 是超类,AbsSeekbar 是 Progressbar 的子类,SeekBar 是 AbsSeekbar 的子类。

setMax() 是 Seekbar 的方法,setProgress() 是 Progressbar 的方法。

【讨论】:

timerSeekBar 是变量还是对象? timerSeekBar.setMax(600);和 timerSeekBar.setProgress(30); - 由变量进行的函数调用。目前我知道只有对象只能进行函数调用。这里 findViewById 是一种方法,如前所述,在被转换为 SeekBar 类型后被分配给变量。所以通常 timerSeekBar 是一种方法并且正在调用其他方法,请解释 timeseekbar 是 Seekbar 的实例。 setMax 和 setProgress 是 Seekbar 类的方法。 Seekbar 扩展了具有同步方法 setMax() 的 AbsSeekBar。【参考方案2】:

SeekBar 是一个小部件。它是在文件 SeekBar.java 中定义的。在 android 中它本质上是一个View。 Seekbar 最终扩展了基类View.javafindViewById() 方法用于在 android 中查找 view,并使用 setId() 方法为 view 设置特定 id。 我们使用SeekBar timerSeekBar = (SeekBar)findViewById(R.id.timerSeekBar); 告诉系统我们正在使用findViewById() 方法寻找视图,然后将基类View.class 类型对象转换为子类SeekBar.class 类型对象。 (SeekBar) 用于告诉系统这个viewSeekBar 的一个实例。

【讨论】:

谢谢,timerSeekBar 是一个对象,对吧?像包裹一样的小部件(请原谅菜鸟)? 是的......看看你基本上是在写TimerSeekBar mySeekBar然后你正在创建名为 mySeekBar 的 TimerSeekBar 类的对象。然后你可以使用 objectName.methodName( )... 谢谢,在这个TextView timerTextView=(TextView) findViewById(R.id.timerTextView); TextView 也是一个小部件? Widget 是不是像一个包,像一组类的代码集合? 这是一个代码集合。如果你按住ctrl键并点击TextView,你会找到TextView.java文件的代码。你会明白的。 PS-如果我的解释对您有所帮助..请将我的答案标记为已接受。

以上是关于这个java代码中的timerSeekBar是啥对象或变量?啥是findViewById,的主要内容,如果未能解决你的问题,请参考以下文章

生成报告 - 啥对您有用? [关闭]

您如何将图像标签的源设置为二进制图像数据,我所看到的没有啥对我有用[重复]

java中的tmp_xxx是啥意思?

java中的“x =(某物)”是啥意思?

synchronized 加在java方法前面是啥作用

java中的Object []和Object o是啥[关闭]