【发布时间】:2012-11-16 20:10:54
【问题描述】:
在我的 Android 应用程序中有一个包含 20 个按钮的活动。每个按钮都必须转到另一个活动/页面。 我尝试了几种方法,但我不能多次使用意图。
选项 1:
public void onClick(View v) {
switch(v.getId()){
case R.id.ivNB:
Intent intent = new Intent(this, NoordBrabant.class);
this.startActivity(intent);
break;
case R.id.ivZH1:
Intent intent = new Intent(this, ZuidHolland.class);
this.startActivity(intent);
break;
/**** End so 20 more ****/
}
在第二种情况下,intent不好,我不能在1 switch中使用更多的intent吗?
选项 2:
ivNB.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
// TODO Auto-generated method stub
Intent i = new Intent(getApplicationContext(), NoordBrabant.class);
startActivity(i);
}
});
ivZeeland.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
// TODO Auto-generated method stub
Intent i = new Intent(getApplicationContext(), Zeeland.class);
startActivity(i);
}
});
/**** End so 20 more ****/
这种方式适用于 maby 10 中的 5 个相同,但有 20 个应用程序崩溃。
选项 3:
public void onClick(View v) {
if (v == ivGelderland){
Intent intent = new Intent(this, Gelderland.class);
this.startActivity(intent);
}
else if (v == ivNB) {
Intent intent = new Intent(this, NoordBrabant.class);
this.startActivity(intent);
}
else if (v == ivLimburg) {
Intent intent = new Intent(this, Limburg.class);
this.startActivity(intent);
}
/**** End so 20 more ****/
这种方式根本行不通,是不是我这里做错了什么??
请有人帮助我,我现在正在苦苦挣扎几天!
谢谢!
【问题讨论】:
-
“我已经尝试了几种方法,但我无法多次使用意图。”为什么不呢?
-
你为什么不在第一种情况下只声明一次意图并在其他情况下使用同一个对象?在您的代码中,您对多个变量使用相同的名称,这是重复的局部变量错误!
-
@323go 我认为 Imran 只是说您可以声明
Intent intent = null;然后在switch中设置intent = ...,然后在switch之后使用if (intent != null) startActivity(intent);... ,但并不能解决问题。 -
@323go 您需要更好地理解 switch-case 恕我直言的变量范围。除非使用大括号,否则每个 case 子句中的变量范围对应于整个 switch 语句。看看:stackoverflow.com/questions/3894119/…
-
交叉检查是否已在清单文件中声明了所有 20 个活动。
标签: android android-intent onclick android-activity onclicklistener