Рассмотрим приложение имеет три вида деятельности, а именно A1, A2, A3:

A1 вызывает A2 со значением, добавленным в его Intent "value"

Intent i=new Intent(A1.this,A2.class);
i.putExtra("value",editTextVal); //editTextVal is got from an editText during Runtime

Где A2 принимает добавленное значение от A1 и сохраняет его в «sample»:

sample=getIntent().getExtra().getString("value");

Теперь управление переходит к A3 из A2 .ie, A2 намеревается A3, и теперь, когда A3 вызывает Activity A2, возникает ошибка, потому что A2 имеет .getExtra(), который пытается получить добавленные данные из Intent, где в качестве Intent используемый в A3 не имеет .putExtra(), это просто

Intent i3=new Intent(A3.this,A2.class);

Так что происходит ошибка во время выполнения .. Помогите мне исправить это ..

0
Syam Sundar K 24 Апр 2017 в 16:04

2 ответа

Лучший ответ

Когда вы переходите от A3 к A2, действие A2 ищет Bundle Object, но так как вы не передаете никаких значений от A3 к A2, это дает исключение нулевой точки. Один из способов остановить это - установить флаг (статическую переменную) и назначить ему любое значение. Значение, скажем, 1, когда вы переходите от А1 к А2 на вашем значении проверки активности А2 FLAG, если FLAG == 1 пытается получить объект Bundle. Всякий раз, когда вы переходите от A2, убедитесь, что вы изменили FLAG на другое значение, отличное от 1

      //Declare a Variable FLAG in A1 as 
      public static int FLAG;

      // For transition from A1 to A2
       Intent I =new Intent(A1.this,A2.class);
       I.putExtras("Key","Value");
       FLAG=1;
       startActivity(I);

       //on your A2 activity 
       if(A1.FLAG==1)
       {
          Bundle extras=getIntent().getExtras();
          String Value=extras.getString("Key");
       }

        //When you make a transition to A3

       Intent i1=new Intent(A1.this,A2.class);
       A.FLAG=2;
       startAcitivy(i1);
0
Dwijraj Bhattacharyya 24 Апр 2017 в 13:18
    if(getIntent().hasExtra("value")) {
        sample=getIntent().getStringExtra("value");
    }

    /* while using sample check for null

     */
    if(!TextUtils.isEmpty(sample)) {
        // use sample here
    }
0
Praveen 24 Апр 2017 в 13:11