3

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

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

我还可以在 XML 文件中给出一个函数名称。

  android:onClick="click_event"

我的疑问是,哪种方法是最好和有效的?就像它说的那样,最好使用@string 资源而不是硬编码资源。

4

1 回答 1

10

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

添加按钮

这条线

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

不添加Button. 它声明并初始化一个实例,Button该实例引用了Button您当前膨胀的 xml 中idbutton1

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

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

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

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

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

点击

至于onClick()这取决于你觉得在你的情况下最简单和最好的。我喜欢经常像这样在 xml 中声明它,但您可以通过多种方式进行声明。使用这种方法你只需要确保你有一个像这样的函数,public它只接受一个参数,并且该参数必须是View

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

我还更改了名称,因此您的 xml 就像

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

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

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 OnClickListenerActivity声明中添加的最后一种方式

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      
    }
};

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

于 2013-08-19T17:36:50.200 回答