当我阅读有关如何动态创建布局的教程时,我发现xml文件中的buttons
被定义为view
,如下所示,而不是我预期定义的为buttons
。定义视图元素的方法是相同还是存在差异?
的xml:
<LinearLayout
android:id="@+id/linearLayout00"
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:orientation="horizontal">
<Button android:text="Add View"
android:id="@+id/addBtn00"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight=".5" />
<Button
android:text="Remove View"
android:layout_height="wrap_content"
android:id="@+id/removeBtn00"
android:layout_width="0dp"
android:layout_weight=".5" />
</LinearLayout>
Java_Code:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
View buttonAdd = findViewById(R.id.add);
buttonAdd.setOnClickListener(this);
View buttonRemove = findViewById(R.id.remove);
buttonRemove.setOnClickListener(this);
答案 0 :(得分:0)
Button类是View的子类。多态允许我们使用子类代替父类但是,您只能访问View类中的方法,而不能访问Button类特有的任何方法。
这意味着您将无法调用setText()
之类的方法(Button类继承自TextView,后者继承自View)
如果你想把它投射到按钮上,你应该写:
Button buttonAdd = (Button) findViewById(R.id.add);