0

我有 3 个活动

活动1 活动2 活动3

这里的代码:

活动1:

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;

活动3:

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);

            }
        });

问题是当我在我的 Activity3 中单击返回按钮(在移动返回按钮上)时,有时会出现 NullPionterException

Activity2中这一行的异常点

actionArray=recdData.getParcelableArrayList("actionArray");

任何人都可以帮助我吗?

4

3 回答 3

3

这是因为捆绑变得空所以检查你的捆绑null喜欢@。

if(recdData!=null){

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

更新

甚至在调用Biraj Zalavadia提到的 Intent 时传递适当的上下文

用过的:

意图 i = new Intent(Activity3.this, Acivity2.class);

反而:

意图 i = new Intent(getBaseContext(), Acivity2.class);

于 2013-09-13T06:24:28.523 回答
2

在 Activity3 中,您使用了启动 Activity2 的意图。你没有在里面放任何额外的东西。因此,当您在 Activity2 中获取捆绑包时

Bundle recdData = getIntent().getExtras();

它实际上是空的。您应该在使用它之前进行检查,如下所示:

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

您还应该知道,使用当前导航,当您从 Activity3 启动 Activity2 时,您不会像预期的那样拥有actionArrayand 。comedyArray

于 2013-09-13T06:22:57.997 回答
2

尝试这个

你得到 getBaseContext() null

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);

            }
        });
于 2013-09-13T06:23:42.390 回答