MainActivity Android studio中的多个按钮

时间:2016-03-18 00:11:13

标签: java android button

public class MainActivity extends AppCompatActivity implements View.OnClickListener {

EditText textmsg;
static final int READ_BLOCK_SIZE = 100;


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

    textmsg = (EditText) findViewById(R.id.editText1);

}

 @Override
 public void onClick(View v) {
   Button noteBtn = (Button) findViewById(R.id.noteBtn);
   Button resuBtn = (Button) findViewById(R.id.resuBtn);
   Button agenBtn = (Button) findViewById(R.id.agenBtn);


 noteBtn.setOnClickListener(new View.OnClickListener() {
     @Override
     public void onClick(View v) {
         Intent intent = new Intent(MainActivity.this, Notes.class);
     }
 });
 resuBtn.setOnClickListener(new View.OnClickListener() {
     @Override
     public void onClick(View v) {
         Intent intent = new Intent(MainActivity.this, Results.class);
     }
 });
 agenBtn.setOnClickListener(new View.OnClickListener() {
     @Override
     public void onClick(View v) {
         Intent intent = new Intent(MainActivity.this, Agenda.class);
     }
 });

当我运行应用程序时,按钮不起作用。如果我按钮设置为..

public class MainActivity extends AppCompatActivity {      
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);


    Button agenBtn = (Button) findViewById(R.id.agenBtn);
    Button resuBtn= (Button) findViewById(R.id.resuBtn);
    Button noteBtn = (Button) findViewById(R.id.noteBtn);


    agenBtn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent intent = new Intent(MainActivity.this, Agenda.class);
            startActivity(intent);
        }
    });  etc...

如果我使用上面的代码,代码工作正常,按钮正常工作。但是不同类别/活动的其他功能不会运行。有人可以给我一个解决方案或解释如何解决这个问题。

2 个答案:

答案 0 :(得分:0)

你应该放置:

 this.noteBtn = (Button) findViewById(R.id.noteBtn);
 this.notBtn.setOnClickListener(this);
 this.resuBtn = (Button) findViewById(R.id.resuBtn);
 this.resuBtn.setOnClickListener(this);
 this.timeBtn = (Button) findViewById(R.id.timeBtn);
 this.timeBtn.setOnClickListener(this);

onCreate()而不是onClick()。使按钮属于该类,因此您可以在onClick()中引用它们。你不应该在onClickListeners中设置新的onClick(),而应该根据点击的视图的id来设置一个switch语句,以确定按下了哪个按钮。

答案 1 :(得分:0)

此代码

@Override
 public void onClick(View v) {
   Button noteBtn = (Button) findViewById(R.id.noteBtn);
   Button resuBtn = (Button) findViewById(R.id.resuBtn);
   Button timeBtn = (Button) findViewById(R.id.timeBtn);
...

}

无法正常工作,因为它永远不会被调用,因为你的按钮都没有实现它,更糟糕的是它们甚至没有被初始化,因为onClick没有也永远不会被调用。 正确的方法是:

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


    Button but1 = (Button) findViewById(R.id.but1);
    Button resBtn = (Button) findViewById(R.id.resBtn);
    Button noteBtn = (Button) findViewById(R.id.noteBtn);


    agendaBtn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View viewTimeTable) {
            Intent intent = new Intent(MainActivity.this, Agenda.class);
            startActivity(intent);
        }
    });  etc...

因为您首先获得对按钮的引用,并为每个按钮分配 onClickListener

我建议您阅读有关您可以找到它的Android Activity生命周期的更多信息  here