我想将额外的内容传递给我的NextActivity,以便NextActivity中的按钮可以有不同的意图。我成功地这样做来查看不同的布局,但没有关于如何在按钮上执行此操作的线索。 下面是具有工作setContentView开关的代码;
public class ContentViewer extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Bundle bundle = this.getIntent().getExtras();
int chooser = bundle.getInt("Layout");
switch(chooser) {
case 0:
setContentView(R.layout.about);
break;
case 1:
setContentView(R.layout.contact);
break;
case 2:
setContentView(R.layout.contentviewer);
break;
case 3:
setContentView(R.layout.contact);
break;
case 4:
setContentView(R.layout.contact);
break;
case 5:
setContentView(R.layout.contact);
break;
case 6:
setContentView(R.layout.contact);
break;
case 7:
setContentView(R.layout.contact);
break;
case 8:
setContentView(R.layout.contact);
break;
case 9:
setContentView(R.layout.contact);
break;
}
}
}
现在,在这些布局中,有一个具有相同ID的按钮,但我希望它根据不同的情况具有不同的Intent(如上面的setContentView)。
更新 Theres MainActivity,它有一个额外传递的列表视图。单击列表视图中的项目时,它将打开NextActivity(如代码中所示)。 NextActivity具有一个具有Button的布局。现在,根据MainActivity上单击的项目,Button将具有不同的Intent。例如,如果在MainActivity中单击了项目1,则打开NextActivity,覆盖Button以获得意图1.如果在MainActivity项目2中单击,则使用覆盖按钮打开NextActivity以使意图2 INSTEAD of intent 1.足够清楚?
答案 0 :(得分:3)
看起来你已经走在正确的轨道上了。
您需要做的第一件事是确保您的Button在xml android:id="@+id/my_button"
然后在你的setContent逻辑获得对该按钮的引用之后:
Button myButton = (Button)findViewById(R.id.my_button);
然后,您可以向该按钮添加onClick侦听器以处理用户点击:
myButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
// Your switch logic should go here!
}
});
在onClick功能中你可以添加你的开关逻辑,你可能有一个单独的额外功能,但这取决于你,你基本上可以像上面那样做,但调用不同的意图而不是设置内容。
答案 1 :(得分:2)
你可能需要做这样的事情:
int valueFromBundle = get value from bundle here...;
Button ipButton = (Button)findViewById(R.id.my_button);
ipButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
switch(chooser) {
case 0:
Intent i = new Intent(fromActivity.class, toActivity.class);
startActivity(i);
break;
case 1:
Intent i = new Intent(fromActivity.class, toActivity.class);
startActivity(i);
break;
etc..,
}
}
});