2012-01-16 94 views
1

我似乎不能鏈接頁面上的多個按鈕。 該頁面主要有標題,低於其鏈接到3個不同的主題 ,我曾嘗試代碼(我在此網站上發現)3個按鈕是:在Android上連接按鈕

package com.ICTrevisionapp; 

    import android.app.Activity; 
    import android.content.Intent; 
    import android.os.Bundle; 
    import android.view.View; 
    import android.widget.Button; 

    public class topicstoquiz extends Activity { 
     /** Called when the activity is first created. */ 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     // TODO Auto-generated method stub 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.topics);} 
     public void onClick(View v) { 
     { 
      Button clickedButton = (Button) v; 
      setContentView(0); 
      switch(clickedButton.getId()) 
      { 
      case R.id.button2: 
        setContentView(R.layout.topic1); 
       Intent myIntent = new Intent (v.getContext(),topicstotopicone.class); 
       startActivityForResult(myIntent, 0); 
       break; 
      case R.id.button3: 
       setContentView(R.layout.topic2); 
       break; 
      } 
     } 
    } 

的情況下部分。

我也曾嘗試代碼:

 Intent myIntent = new Intent (view.getContext(),topicstoquiz.class); 
     startActivityForResult(myIntent, 0); 

但我只能似乎得到它鏈接到一個活動,只能從一個按鈕。

我可能這樣做完全錯誤,所以我怎樣才能將頁面上的每個按鈕鏈接到一個單獨的活動,以便我可以將它們鏈接到其他頁面。 (如果是有道理的)

回答

2

我更願意去 「很長的路要走」 一下:

在你的onCreate:
Button button2 = (Button)findViewById(R.id.button2);
button2.setOnClickListener(yourListener);

然後創建監聽方法:
private OnClickListener yourListener = new OnClickListener(){
public void onClick(View v){
Intent yourIntent = new Intent(yourCurrentActivity.this, classYoureNavigatingToo.class);
startActivity(yourIntent);
}
};

所以你可以爲每個按鈕設置不同的監聽器,指向一個不同的類。如果有幫助,不要忘記標記爲答案!

更新:

public class topicstoquiz extends Activity {
/** Called when the activity is first created. */
@Override protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.topics);
Button button2 = (Button)findViewById(R.id.button2);
Button button3 = (Button)findViewById(R.id.button3);
Button button4 = (Button)findViewById(R.id.button4);
button2.setOnClickListener(button2Listener);
button3.setOnClickListener(button3Listener);
button4.setOnClickListener(button4Listener);
}

設置點擊聽衆就像我上面顯示。你在你的AndroidManifest.xml中指定你的活動是否正確?請在收到強制關閉時發佈堆棧跟蹤結果。

+0

林丟失,這會的onCreate我把這個? super.onCreate(savedInstanceState); 或 保護無效onCreate(Bundle savedInstanceState) 我還需要擺脫我在那裏的情況說明嗎? 感謝您的快速回復:) – Crazyfool 2012-01-16 20:32:15

+0

方法onCreate。 super.onCreate ...就是超級通話。你會把你的setContentView調用後發佈的代碼的第一部分。 – bschultz 2012-01-16 20:36:37

+0

是的,如果你按照我提出的方式去解決這個問題,你會擺脫這種情況。提供的樣品nifftyRich也會給你你正在尋找的結果。 – bschultz 2012-01-16 20:43:02

0
 
Button myButton = (Button) findViewById(R.id.my_button); 
myButton.setOnClickListener (or something like that) 

1

對於多個按鈕,我個人更喜歡一個類似於你所做的switch語句方法。首先,將OnClickListner投入到您的活動中,然後使交換機投入使用。

public class MainActivity extends Activity implements OnClickListener {... 

那麼活動內:

public void onClick(View view) { 
     Intent i; 

     switch(view.getId()) { 

     case R.id.buttonOneId: 

      i = new Intent(getApplicationContext(), Activity1.class); 
        startActivity(i); 
      break; 

     case R.id.buttonTwoId: 

      i = new Intent(getApplicationContext(), Activity2.class); 
        startActivity(i); 
      break; 
     } 
    } 

要啓用該功能與在活動的按鈕工作的每個按鈕做到這一點:

Button button = (Button) findViewById(R.id.buttonId); 
    button.setOnClickListener(this); 

替代方案中,OnClickListner可以是像這樣在線設置:

Button button = (Button) findViewById(R.id.buttonId); 
    button.setOnClickListener(new OnClickListener(){ 
     @Override 
     public void onClick(View v){ 
      Intent i = new Intent(getApplicationContext(), Activity.class); 
      startActivity(i); 
     } 
    }); 

如果使用內嵌方法,請重複其他按鈕的代碼。