这个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.java
。 findViewById()
方法用于在 android 中查找 view
,并使用 setId()
方法为 view
设置特定 id。
我们使用SeekBar timerSeekBar = (SeekBar)findViewById(R.id.timerSeekBar);
告诉系统我们正在使用findViewById()
方法寻找视图,然后将基类View.class
类型对象转换为子类SeekBar.class
类型对象。 (SeekBar)
用于告诉系统这个view
是SeekBar
的一个实例。
【讨论】:
谢谢,timerSeekBar 是一个对象,对吧?像包裹一样的小部件(请原谅菜鸟)? 是的......看看你基本上是在写TimerSeekBar mySeekBar
然后你正在创建名为 mySeekBar 的 TimerSeekBar 类的对象。然后你可以使用 objectName.methodName( )...
谢谢,在这个TextView timerTextView=(TextView) findViewById(R.id.timerTextView); TextView 也是一个小部件? Widget 是不是像一个包,像一组类的代码集合?
这是一个代码集合。如果你按住ctrl
键并点击TextView,你会找到TextView.java文件的代码。你会明白的。 PS-如果我的解释对您有所帮助..请将我的答案标记为已接受。以上是关于这个java代码中的timerSeekBar是啥对象或变量?啥是findViewById,的主要内容,如果未能解决你的问题,请参考以下文章