Как сделать кнопку видимой в одном действии, если щелкнуть радиокнопку в другом? - PullRequest
2 голосов
/ 17 января 2012

Я создаю простую игру для Android, в которой пользователь выбирает ответ на вопрос (например, «Деятельность1»), нажимая радиокнопку. Когда нажата правильная кнопка радио, кнопка «Кредиты» (Activity2) станет ВИДИМОЙ и станет доступной для пользователя.

Как я могу это сделать? я не могу заставить эти два мероприятия работать вместе?

Код из Задания 1 (Вопрос), где пользователь нажимает кнопку радио:

 final Button s1 = (Button) findViewById(R.id.radio0);
 final Button s2 = (Button) findViewById(R.id.radio1);
 final Button s3 = (Button) findViewById(R.id.radio2);

 s1.setOnClickListener(new OnClickListener() { 
      public void onClick(View arg0) {
      btnEliminar.setVisibility(View.VISIBLE);
      btnKort.setVisibility(View.VISIBLE);
      s1.setVisibility(View.GONE);
      s2.setVisibility(View.GONE);
      s3.setVisibility(View.GONE);




      AlertDialog.Builder builder = new AlertDialog.Builder(Activity1.this);
        builder.setMessage("...");
        builder.setCancelable(true);
        builder.setPositiveButton("...", new DialogInterface.OnClickListener() {

                public void onClick(DialogInterface dialog, int which) {
                    dialog.cancel();

                }
            });

        AlertDialog alert = builder.create();
        alert.show();

        }

  });

Код из Activity2, где должна появиться кнопка:

открытый класс Activity2 extends Activity {

 public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity2);

        Button credit1 = (Button) findViewById(R.id.buttoncredit1);
        credit1.setVisibility(View.INVISIBLE);
        ....
        credit1.setVisibility(View.VISIBLE);

Надеюсь, кто-нибудь сможет мне помочь Спасибо

Ответы [ 5 ]

6 голосов
/ 17 января 2012

Это можно сделать с помощью дополнений Intent.Должно выглядеть примерно так:

//Somewhere in Activity1
Intent intent = new Intent();
intent.setClass(getApplicationContext(), Activity2.class);
intent.putExtra("makeButtonVisible", true); // Or false
startActivity(intent);

//Somewhere in Activity2
boolean isButtonVisible = getIntent().getBooleanExtra("makeButtonVisible");
// Change button's visibility accordingly
2 голосов
/ 17 января 2012

Чтобы понять лучший ответ на этот вопрос, вы должны понимать, что каждое действие в Android по существу изолировано от любых других действий.Это означает, что вы не можете изменять такие вещи, как видимость виджета, из одного занятия в другое.

При этом наилучшим решением, вероятно, будет передача дополнений с использованием Intent при запуске второго занятия.Это можно сделать довольно легко, выполнив эти шаги .

Надеюсь, это поможет!

1 голос
/ 17 января 2012

В Деятельности1

    s1.setOnClickListener(new OnClickListener() { 
          public void onClick(View arg0) {

    Intent intent = new Intent(this,Activity2.class);

    if(s1.isChecked)
        intent.putExtra("state",0);
    else
        intent.putExtra("state",-1);

    startActivity(intent);

  });

В занятии 2

Intent intent = getIntent();
int state = Integer.parseInt(intent.getExtras().get("state").toString());
credit1.setVisibility(state);

Надеюсь, эта помощь

1 голос
/ 17 января 2012

Вы можете сделать это разными способами:

1) Реализуйте статический метод в Activity2 и вызывайте его из Activity1. Не изменяйте видимость напрямую - просто измените некоторое статическое поле Activity2, а затем обработайте его в onStart()

2) При запуске Activity2 поместите значения в Intent, а затем обработайте их в Activity2. Но имейте в виду, что пользователь может использовать кнопку «Назад», поэтому вам нужно правильно ее обработать (например, вы можете выполнить действие .finish (), а затем запустить новое).

Сначала звучит проще, но старайтесь избегать таких статических методов. Второй способ лучше для вашего дизайна приложения.

0 голосов
/ 17 января 2012

Вы должны использовать Намерение для смены действия на другое:

Intent intent = new Intent(thisClss.this, AnOtherClass.class);
startActivity(intent);
...