ANDROID JAVA - 一次定义所有id。 (+创建简单的按钮)

时间:2014-11-09 20:20:46

标签: java android xml

我是Java编程新手,我设法创建一个小计算器作为一个小测试应用程序。 但我认为我正在使用多种代码来满足我的需求。 所以我给了一个Button一个名字:buttonname 现在要点击时更改它的文字我需要:

public class MyActivity extends Activity {
    Button buttonname;

    @Override
    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_my);

        buttomname = (Buttom) findViewById(R.id.buttomname);

    }

    public void buttonnameOnClick(View v) {
        button1.setText ("NewText")
    }

}

(我已经把我必须添加的所有东西都搞砸了) 所以我必须做以上所有事情+连接按钮点击xml文件。

所以我想知道是否有更简单的方法来定义所有对象,所以我不必这样做:按钮按钮名称; 按钮名=(Buttom)findViewById(R.id.buttomname ); 一直。

我想知道是否有更简单的方法来自动创建按钮事件。

(我已经习惯了Visual Studio,但现在我在Android Studio中迷失了。所以在Visual Studio上我只需要双击按钮并输入:buttonname.Text =“NewText”;)

5 个答案:

答案 0 :(得分:0)

有一个名为Butter Knife的库可以做大概

但是,我不确定你是否真的需要它。

哦,你不必每次都找到相同的按钮。您可以在onCreate中找到它并存储在一个字段中。

答案 1 :(得分:0)

首先,你有错字

buttomname = (Buttom) findViewById(R.id.buttomname);

应该是

buttomname = (Button) findViewById(R.id.buttomname);
你忘记了;在一行“你的IDE没有向你显示错误!!”

中的小修正
public void buttonnameOnClick(View v) {
    button1.setText ("NewText")
}

应该是

buttomname.setOnClickListener(new View.OnClickListener() {
         public void onClick(View v) {
            buttomname.setText ("NewText");
         }
     });

inside protected void onCreate。

第二种方法: 如果您在XML中定义了android:onclick =“buttonnameOnClick”,那么

public void buttonnameOnClick(View v) {
    button1.setText ("NewText")
}

要更正

public void buttonnameOnClick(View v) {
    buttomname.setText ("NewText");
}

答案 2 :(得分:0)

您的代码部分正确,

(Buttom) is wrong change it to (Button)

另一件事

public void buttonnameOnClick(View v) {
    button1.setText ("NewText")
}

可以改为:

 public void buttonnameOnClick(View v) {
    Button buttonTemp = (Button)v;
    buttonTemp.setText ("NewText");
}

假设您正在从布局xml文件中调用该方法。

答案 3 :(得分:0)

如果您有许多相同的按钮需要处理

,您可以循环执行
@Override
protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_my);

        for (int btn_id : new int[]{
                R.id.buttomname
                , R.id.buttomname2
                , R.id.buttomname3
        }) {
            View v = view.findViewById(btn_id);
            if (v != null) {
                v.setOnClickListener(onClickButton);
            }
        }

  }


  // 
  private View.OnClickListener onClickButton = new View.OnClickListener() {
    @Override
    public void onClick(View view) {
          // .. handle click 
          if (view.getId()==R.id.buttomname2){
          }
    }

答案 4 :(得分:-1)

必须对Button对象使用onClickListener()方法。 你的代码就像这个结构;

buttonname = (Button)findViewById(R.id.buttonname);

    buttonname.setOnClickListener(new View.OnClickListener() {
                 public void onClick(View v) {
                     // Perform action on click
                 }
});

我建议您访问按钮的Button | Android Dev页面。