2013-09-13 4 views
0

У меня есть 3 ДеятельностьПолучение NullPointer Исключение при переключении между процессами

Activity1 Avtivity2 Activity3

Здесь Кодекс:

Activity1:

Intent intent= new Intent(Activity1.this,Acivity2.class); 
Bundle b=new Bundle();   
b.putParcelableArrayList("actionArray", (ArrayList<? extends Parcelable>) AllListArray.get(0)); 
b.putParcelableArrayList("comedyArray", (ArrayList<? extends Parcelable>) AllListArray.get(1)); 
intent.putExtras(b);    
startActivity(intent); 

деятельности2:

//get the Bundle of movie category data data from previous activity 
     Bundle recdData = getIntent().getExtras(); 

     actionArray=recdData.getParcelableArrayList("actionArray"); 
     comedyArray=recdData.getParcelableArrayList("comedyArray"); 


public void btnClicker(View v) 
    { 
     Intent i= new Intent(getApplicationContext(), Activity3.class);; 
     Bundle b=new Bundle(); 
     switch(v.getId())//get the button label id from respective View 
     { 
     case R.id.actionBtn:    
      b.putParcelableArrayList("movieCategorie", (ArrayList<? extends Parcelable>) actionArray); 
      b.putString("movieCategorieDisplay","Action Movies"); 
      i.putExtras(b); 
      startActivity(i);   
      break; 

     case R.id.comedyBtn: 
      b.putParcelableArrayList("movieCategorie", (ArrayList<? extends Parcelable>) comedyArray); 
       b.putString("movieCategorieDisplay","Comedy Movies"); 
      i.putExtras(b); 
      startActivity(i); 
      break; 

Activity3:

backButton.setOnClickListener(new View.OnClickListener() { 

      public void onClick(View v) { 
       Intent i = new Intent(getBaseContext(), Acivity2.class); 
       i.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT); 
       CategoryListView.this.startActivity(i); 

      } 
     }); 

Проблема, когда я нажимаю на BackButton (на Mobile BackButton) в моем Activity3 несколько раз Getting NullPionterException

за исключением точек в этой линии в деятельности2

actionArray=recdData.getParcelableArrayList("actionArray"); 

Может ли кто-нибудь мне помочь?

+0

Поместите этот код в блок try/catch, проблема будет решена. –

+1

@pratik, как он решит проблему? – Raghunandan

+0

Это произойдет, потому что когда вы переключитесь назад, вы получили нулевые данные в своих массивах, какие данные Bundle вы получаете там. Таким образом, вы можете поместить туда нулевую проверку или вам нужно поставить блок try/catch. Таким образом, приложение не будет разбито, и исключение будет запущено. –

ответ

3

Это потому, что расслоение получает нуль так проверить пакет null как @.

if(recdData!=null){ 

actionArray=recdData.getParcelableArrayList("actionArray"); 
comedyArray=recdData.getParcelableArrayList("comedyArray"); 
} 

Обновлено

Даже передать соответствующий контекст при вызове Intent как Упоминание Biraj Zalavadia

Б:

Намерение я = новый Intent (Activity3.this, Acivity2.class);

Вместо того, чтобы:

Намерение я = новый Намерение (getBaseContext(), Acivity2.class);

+0

Несколько раз я получаю recData null, когда BackKey нажата. Я не должен получать null beacuse recdata, я перехожу к следующему действию, когда пользователь нажимает на какую-то кнопку в этой операции? Как избежать null? – user2580568

2

В Activity3 вы использовали намерение запустить Activity2. Вы не добавили никаких дополнительных услуг. Поэтому, когда вы получаете комплект в Activity2

Bundle recdData = getIntent().getExtras(); 

Это на самом деле null. Вы должны сделать проверку, прежде чем использовать его, как это:

Bundle recdData = getIntent().getExtras(); 
if(recdData != null) { 
    actionArray=recdData.getParcelableArrayList("actionArray"); 
    comedyArray=recdData.getParcelableArrayList("comedyArray"); 
} 

Вы также должны знать, что, используя текущую навигацию, вы не будете иметь actionArray и comedyArray, как вы ожидали, когда вы запускаете деятельности2 из Activity3.

2

Попробуйте

Вы получаете getBaseContext() нуль

backButton.setOnClickListener(new View.OnClickListener() { 

      public void onClick(View v) { 
       Intent i = new Intent(Activity3.this, Acivity2.class); //UPDATE HERE 
       i.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT); 
       CategoryListView.this.startActivity(i); 

      } 
     }); 
Смежные вопросы