2012-01-16 92 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); 
     } 
    }); 

如果使用内嵌方法,请重复其他按钮的代码。