哪个是添加button的最好方法?

我是新的android开发。 我有疑问 我知道你可以添加一个button并初始化它

Button b1=(Button) findViewById(R.id.button1); 

我也可以在XML文件中给出一个名字。

  android:onClick="click_event" 

我的疑问是,这是最好的和有效的方式? 就像它说,它更好地使用@string资源,而不是一个硬编码的资源。

我觉得你很困惑。 你给的例子是两个不同的东西。

添加一个button

这条线

 Button b1=(Button) findViewById(R.id.button1); 

不添加一个Button 。 它声明并初始化Button一个实例,它引用了当前充气的xml中的一个Button ,该Buttonidbutton1

所以在你的XML你会有某个地方

 <Button android:id="@+id/button1" <!-- other properties --> /> 

您可以用编程方式添加一个Button

 Button bt1 = new Button(this); // give it properties 

但是在xml中执行通常更容易,因为在这里你必须以编程方式给它参数,属性,并将它添加到一个膨胀的layout

的OnClick

onClick() ,取决于你感觉的是最简单和最好的情况。 我喜欢像这样经常在xml中声明它,但是你可以用几种方法来完成。 使用这种方法,你只需要确保你有一个这样的函数是public ,只有一个参数,该参数必须是一个View

  public void clickEvent(View v) { // code here } 

我也改变了名字,所以你的XML会像

 <Button android:id="@+id/button1" <!-- other properties --> android:onClick="clickEvent"/> 

你也可以在你的Java中设置onClick()

 Button b1=(Button) findViewById(R.id.button1); b1.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // code here } }); 

要么

  Button b1=(Button) findViewById(R.id.button1); b1.setOnClickListener(this); @Override public void onClick(View v) { // code here } 

请注意,您需要添加的最后一种方法是在Activity声明中implements OnClickListener

 public class MyActivity extends Activity implements OnClickListener { 

您也可以通过将其更改为类似的方式来创build您自己的点击Listener

 b1.setOnClickListener(myBtnClick); 

然后用类似的东西创build它的一个实例

 public OnClickListener myBtnClick = new OnClickListener() { @Override public void onClick(View v) { // click code here } }; 

你可以使用这个Button切换多个Button ,或者selectView参数来知道哪个Button被点击或者为不同的Button创build不同的Listeners