Как использовать одно намерение с несколькими кнопками - PullRequest
0 голосов
/ 12 августа 2010

У меня есть контекстное меню Android с различными вариантами выбора, и в зависимости от выбора пользователя, я хочу начать намерение.Намерение запускает одно и то же действие для всех кнопок, но будет содержать разные строковые переменные в зависимости от выбора.В настоящее время я использую методологию переключения, для моего прослушивателя кликов, но продолжаю сталкиваться с проблемами «дублирующихся локальных переменных», поскольку я пытаюсь устранить повторение кода!Если бы кто-нибудь мог предоставить немного псевдокода, это было бы еще лучше!

Ответы [ 3 ]

1 голос
/ 12 августа 2010

вы можете использовать intent.putExtra (String name, String value) и передать его другому действию.

Псевдокод:

Button1.value = "X";
Button2.value = "Y";

onClickListner (View v) {
Намерение намерение = новое намерение ();
intent.putExtra ( "ButtonValue", v.value ());
// здесь идет дополнительный код ...
}

Надеюсь, это то, что вы искали ..

Вина

1 голос
/ 12 августа 2010

Трудно сказать, не видя некоторый код, но «дублирующиеся локальные переменные» вместе с «регистром переключения» заставляют меня думать, что вы объявляете переменную в одном из случаев с тем же именем, что и переменная из другого случая.

Код в разных случаях одного и того же переключателя находится в одной и той же области видимости, если только код в скобках не заключен в скобки, например:

switch(VALUE) {
case A: {
    String string = "";
}
case B: {
    //Same variable name, possible since it's in a different scope now.
    String string = "";
}
}

Так что используйте либо скобки, либо простоубедитесь, что вы используете разные имена переменных во всех случаях.

0 голосов
/ 12 августа 2010

Мне нравится использовать set / getTag (Object), так как вы можете поместить в него любой понравившийся вам тип (если вы будете осторожны с его повторным выпуском):

button1.setTag(MyClass.STATIC_INT_1);
button2.setTag(MyClass.STATIC_INT_2);
button1.setOnClickListener(Click);
button2.setOnClickListener(Click);


private OnClickListener Click(View v) {
Intent intent = new Intent() ;
intent.putExtra("Value", Integer.parseInt(v.getTag().toString()) ) ;
···
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...