我想知道是否有办法做到这一点,所以看起来会更好。我怎么能改变这个,所以我可以比较整数,或者有更简单的方法来做这个,所以我没有很多if语句或我应该尝试使用枚举来比较字符串?
public void onClick(View v)
{
Intent choiceIntent = getIntent();
String msg = choiceIntent.getStringExtra("Choice1");
if (msg.contentEquals("Option1"))
{
if (v.getId() == R.id.button1)
{
Intent intent1 = new Intent(this,Choice3.class);
intent1.putExtra("Choice2", "Option3");
startActivityForResult(intent1, 1);
this.startActivity(intent1);
}
else if (v.getId() == R.id.button2)
{
Intent intent1 = new Intent(this,Choice3.class);
intent1.putExtra("Choice2", "Option4");
startActivityForResult(intent1, 1);
this.startActivity(intent1);
}
}
else if (msg.contentEquals("Option2"))
{
if (v.getId() == R.id.button1)
{
Intent intent1 = new Intent(this,Choice3.class);
intent1.putExtra("Choice2", "Option5");
startActivityForResult(intent1, 1);
this.startActivity(intent1);
}
else if (v.getId() == R.id.button2)
{
Intent intent1 = new Intent(this,Choice3.class);
intent1.putExtra("Choice2", "Option6");
startActivityForResult(intent1, 1);
this.startActivity(intent1);
}
}
}
答案 0 :(得分:1)
使用枚举。
intent1.putExtra("Choice1", yourEnum.OPTION_3);
要检索该值,请使用
choiceIntent.getSerializableExtra("Choice1");
这将允许您使用enum作为switch语句。
答案 1 :(得分:0)
看起来你的陈述之间唯一变化的是Intent的附加内容。我也不确定你为什么要同时startActivityForResult()
和startActivity()
,但我会假设你知道。您可以通过执行以下操作来减少四重代码:
public void onClick(View v) {
Intent choiceIntent = getIntent();
String msg = choiceIntent.getStringExtra("Choice1");
Intent intent1 = new Intent(this,Choice3.class);
if (...) {
intent1.putExtra("Choice2", "Option3");
}
// Etc.
startActivityForResult(intent1, 1);
this.startActivity(intent1);
}
如果您真的想在某处使用开关,可以在v.getId()
上进行切换,然后进行字符串比较。
答案 2 :(得分:0)
我不确定你要用你的代码实现什么,但我会使用更像的东西:
这样
无需创建额外的枚举
class MyClass {
public static final String INTENT_KEY_CHOICE_1 = "Choice_1";
public static final int INTENT_VALUE_OPTION_1 = 1;
public static final int INTENT_VALUE_OPTION_2 = 2;
....
public void onClick(View v) {
int msg = getIntent().getIntExtra(INTENT_KEY_CHOICE_1);
Intent intent1 = new Intent(this, Choice3.class);
int intentExtra = INTENT_VALUE_OPTION_3;
// you can change this easily to a switch statement
if (msg == INTENT_VALUE_OPTION_1) {
intentExtra = v.getId() == R.id.button1 ? R.INTENT_VALUE_OPTION_3 : R.INTENT_VALUE_OPTION_4);
} else if (msg == INTENT_VALUE_OPTION_2) {
intentExtra = v.getId() == R.id.button1 ? R.INTENT_VALUE_OPTION_4 : R.INTENT_VALUE_OPTION_5);
}
intent1.putExtra(INTENT_KEY_CHOICE_2, intentExtra);
this.startActivity(intent1);
}
}
class Choice3 {
public static final String INTENT_KEY_CHOICE_2 = "Choice_2";
public static final int INTENT_VALUE_OPTION_3 = 1;
public static final int INTENT_VALUE_OPTION_4 = 2;
public static final int INTENT_VALUE_OPTION_5 = 3;
public static final int INTENT_VALUE_OPTION_5 = 4;
....
}