получать заявленные от предыдущей деятельности - PullRequest
0 голосов
/ 11 августа 2011

У меня есть 2 Activity, Activity_A и Activity_B. Activity_A имеет флажок и кнопку.

Я пытаюсь сделать, когда я щелкаю кнопку Activity_A_button. Activity_B запускается.,

вот пример кода

        public class Main extends Activity {
    public static CheckBox check1;
        private Button Button1;

CheckBox check1 = (CheckBox)findViewById(R.id.checkBox1);
Button1 = (Button) findViewById(R.id.button1);


button1.setOnClickListener(new OnClickListener() {
            public void onClick(View v) {

final Intent i = new Intent(this, Activity_A.class);

    startActivity(i);

            }
        });

Activity_B

 Textview1 = (TextView)findViewById(R.id.textView1);

  if (Main.check1.isChecked())

        {
                  //code here

}

проблема в том, что я получаю NullPointerExeption, когда я нажимаю кнопку Activity_A @ оператор if

есть идеи?заранее спасибо

Ответы [ 3 ]

2 голосов
/ 11 августа 2011

Сделай что-нибудь подобное.

отправить значение флажка при вызове действия. Затем извлечь его из вашего второго действия и работать соответственно

final Intent i = new Intent(this, Activity_A.class);
    i.putExtras("value",""+check1.isChecked());//sending checked value to next activity
    startActivity(i);





Textview1 = (TextView)findViewById(R.id.textView1);
Bundle bundle = getIntent().getExtras();
 boolean ok=Boolean.parseBoolean(bundle.getString("value"));

  if (ok) //checkbox is checked in previous activity   
        {
               //code here
        }
0 голосов
/ 11 августа 2011

Я также думаю, что это исправлено передачей намерения от первой активности ко второй деятельности.

final Intent i = new Intent(this, Activity_A.class);
i.putExtras("value",""+check1.isChecked());//sending checked value to next activity
startActivity(i);` 

напишите это в первом упражнении

Textview1 = (TextView)findViewById(R.id.textView1);
Bundle bundle = getIntent().getExtras();
boolean ok=Boolean.parseBoolean(bundle.getString("value"));

if (ok) //checkbox is checked in previous activity   
    {
           //code here
    }` 

напишите это во втором упражнении.

0 голосов
/ 11 августа 2011

Если вы не публикуете все (этот код не будет компилироваться), похоже, что вы присвоили check1 локальной переменной

CheckBox check1 = (CheckBox)findViewById(R.id.checkBox1);

вместо статической переменной класса

public static CheckBox check1;

так что Main.check1 все равно будет нулевым, если вы ссылаетесь на него в Activity_B.Однако, несмотря на это, это все еще плохой способ делить состояние между двумя действиями, так как вы пропускаете элемент пользовательского интерфейса.Почему бы вам вместо этого не передать булево значение как связанное дополнительное, которое является частью намерения начать Activity_B, или в обработчике кнопок не установить статическую логическую переменную?И то, и другое намного лучше и проще.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...