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

Jac*_*ath 3 android android-button

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

Button b1=(Button) findViewById(R.id.button1);
Run Code Online (Sandbox Code Playgroud)

我还可以在XML文件中给出一个名称.

  android:onClick="click_event"
Run Code Online (Sandbox Code Playgroud)

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

cod*_*gic 10

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

添加按钮

这条线

Button b1=(Button) findViewById(R.id.button1);
Run Code Online (Sandbox Code Playgroud)

没有添加Button.它声明并初始化的实例Button,其指的是Button在你拥有了目前膨胀XML idbutton1

所以在你的xml中你会有某个地方

<Button
     android:id="@+id/button1"
     <!-- other properties -->
/>
Run Code Online (Sandbox Code Playgroud)

您可以通过Button编程方式添加

Button bt1 = new Button(this);
// give it properties
Run Code Online (Sandbox Code Playgroud)

但是在xml中通常更容易做到,因为在这里你必须以编程方式为它提供参数,属性并将其添加到膨胀 layout

的OnClick

至于onClick()它取决于你认为最简单和最好的情况.我喜欢经常在xml中声明它,但你可以通过多种方式实现它.使用这种方法你只需要确保你有一个这样的函数,public只需要一个参数,该参数必须是aView

 public void clickEvent(View v)
{
    // code here
}
Run Code Online (Sandbox Code Playgroud)

我也改了名字,所以你的xml会是这样的

<Button
     android:id="@+id/button1"
     <!-- other properties -->
     android:onClick="clickEvent"/>
Run Code Online (Sandbox Code Playgroud)

您也可以onClick()在Java中设置类似的东西

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

要么

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

    @Override
    public void onClick(View v)
    {
        // code here
    }
Run Code Online (Sandbox Code Playgroud)

请注意,您需要implements OnClickListenerActivity声明中添加最后一种方式

public class MyActivity extends Activity implements OnClickListener
{
Run Code Online (Sandbox Code Playgroud)

您也可以Listener通过将其更改为类似的内容来创建自己的点击

b1.setOnClickListener(myBtnClick);
Run Code Online (Sandbox Code Playgroud)

然后用类似的东西创建它的实例

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

您可以将其用于多个Buttons并打开id或检查View参数以了解哪个Button被点击或Listeners为不同的Buttons 创建单独的.