在Android Studio中添加第二个onClick方法?

时间:2015-10-01 17:12:59

标签: java android onclick onclicklistener

我刚刚开始学习Java,而且我在为活动中的第二个按钮添加代码时感到困惑。我为我(可能是愚蠢的问题)和任何错误的术语道歉。

以下是MainActivity Java代码:

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Button btnGo = (Button) findViewById(R.id.btnGo);
        btnGo.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                startActivity(new Intent(MainActivity.this, GoActivity.class));
            }
        });
    }
}

如何将此代码添加到btnEscape以转到EscapeActivity?

3 个答案:

答案 0 :(得分:2)

你只需要做与btnGo相同的事情 - 这是通过id找到你的按钮,然后将clickListener设置为它。它可能看起来像那样:

 Button btnEscape = (Button) findViewById(R.id.btnEscape);
        btnEscape.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                startActivity(new Intent(MainActivity.this, EscapeActivity.class));
            }
        });

答案 1 :(得分:1)

这样做的优化方法是使用View.OnClickListener实现您的类并覆盖onClick方法,并在其中使用switch case在视图之间切换并应用这样的点击:

public class SampleActivity extends AppCompatActivity implements View.OnClickListener{
Button btnGo,btnEscape;
@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        btnGo = (Button) findViewById(R.id.btnGo);
        btnEscape= (Button) findViewById(R.id.btnEscape);
        btnGo.setOnClickListener(this);
        btnEscape.setOnClickListener(this);
}
@Override
    public void onClick(View v) {
        switch (v.getId()){
      case R.id.btnGo:
      startActivity(new Intent(MainActivity.this, GoActivity.class));
       break;
     case R.id.btnEscape:
      startActivity(new Intent(MainActivity.this, EscapeActivity.class));
      break;
     default:
      break;
     }
    }
}

答案 2 :(得分:0)

在代码中,Shiram和Nik上面的两条评论所说的是在Button btnEscape...阻止之后添加以Button btnGo.setOnclick开始的块。

@Override
protected void onCreate(Bundle savedInstanceState) {
...
    Button btnGo = (Button) findViewById(R.id.btnGo);
...
    Button btnEscape = (Button) findViewById(R.id.<<name of button in xml>>);
    btnEscape.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            ... whatever ...            }
    });
}

简而言之,以下是一个非常好的模式,触手可及:

    Button btn___ = (Button) findViewById(R.id.<<name of button in xml>>);
    btn___.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            ... whatever ...            }
    });