哪个是添加按钮的最佳方式?

时间:2013-08-19 17:34:10

标签: android android-button

我是Android开发的新手。我有一个疑问。 我知道您可以添加一个按钮并将其初始化为

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

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

  android:onClick="click_event"

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

1 个答案:

答案 0 :(得分:10)

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

添加按钮

这一行

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

不会添加Button。它声明并初始化Button的实例,该实例引用您当前虚增的xml中的Button,其中idbutton1

所以在你的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
    }

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

public class MyActivity extends Activity implements OnClickListener
{

您也可以通过将其更改为

来创建自己的点击Listener
b1.setOnClickListener(myBtnClick);

然后用

之类的东西创建它的实例
public OnClickListener myBtnClick = new OnClickListener()
{
    @Override
    public void onClick(View v)
    {
        // click code here      
    }
};

您可以将其用于多个Button并启用id或检查View参数,以了解点击的Button或创建单独的Listeners对于不同的Button s。