我似乎无法在页面上链接多个按钮。 页面基本上有一个标题,下面有3个按钮,链接到3个不同的主题 我尝试过的代码(我在本网站上找到的代码)是:
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);
但我似乎只能将它链接到一个活动而只能从一个按钮链接。
我可能完全错了,所以如何将页面上的每个按钮链接到单独的活动,以便我可以将它们链接到其他页面。 (如果这是有道理的)
答案 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中指定了您的活动?请在关闭力量后跟踪堆栈跟踪结果。
答案 1 :(得分:1)
对于多个按钮,我个人更喜欢类似于你所做的开关语句方法。首先,将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);
}
});
如果使用内联方法,请重复其他按钮的代码。
答案 2 :(得分:1)
您还可以使用您在xml-layout中为相应按钮设置的android:onClick属性。这完全消除了对开关盒的需求。
android:onClick="onClickYourFirstButton"
在您的活动类中添加onClick方法
public void onClickYouFirstButton(View v) {
http://developer.android.com/reference/android/view/View.html#attr_android%3aonClick
答案 3 :(得分:0)
Button myButton = (Button) findViewById(R.id.my_button); myButton.setOnClickListener ( or something like that)