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

时间:2017-10-11 10:22:29

标签: java android view android-seekbar findviewbyid

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

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);

Image

2 个答案:

答案 0 :(得分:0)

方法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的Child类,SeekBar是AbsSeekbar的子类。

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

答案 1 :(得分:0)

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