簡體   English   中英

MainActivity Android Studio中的多個按鈕

[英]Multiple buttons in MainActivity Android studio

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...

如果我在上面使用此代碼,則該代碼可以正常工作,並且按鈕可以正常工作。 但是具有不同類/活動的其他功能將無法運行。 有人可以告訴我一個解決方案或解釋如何解決此問題。

您應該放置:

 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()引用它們。 您不應在onClick()設置新的onClickListeners ,而應具有一個基於被單擊視圖的ID的switch語句來確定按下了哪個按鈕。

此代碼

@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生命周期的信息,您可以在這里找到

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM