【问题标题】:Parent Activity crashes when pressed Action Bar Home Arrow Button from Child Activity while it is ok when pressed Back Button按下子活动中的操作栏主页箭头按钮时,父活动崩溃,而按下后退按钮则正常
【发布时间】:2017-06-28 15:48:37
【问题描述】:

当按下子 Activity 中的操作栏主页箭头按钮时父 Activity 崩溃,而按下后退按钮则正常。

父 Activity 从 Launcher Activity 接收额外的意图,并使用该对象设置其视图。然后它为结果启动一个子活动,当子活动调用完成或从导航器按下后退按钮时,它不会使父活动崩溃,但是当我按下操作栏箭头(R.id.home)图标时,父活动会崩溃mSomeObjectWhichHasANameProperty 的 NullPointerException。我怎样才能避免这种情况。

public class ParentActivity extends AppCompatActivity{
    Object mSomeObjectWhichHasANameProperty;
    TextView mNameView;
    Button mSomeButton;
    protected void onCreate(Bundle savedInstanceState {
        mSomeObjectWhichHasANameProperty=getIntent().getParcelableExtra("object_key");
        mNameView = (TextView) findViewById(R.id.name);
        mNameView.setText(mSomeObjectWhichHasANameProperty.getName());
        mSomeButton = (Button) findViewById(R.id.button);
        mSomeButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                ChildActivity.start(this, SOME_REQUEST_CODE);
            }
        });
    }
}


public class ChildActivity extends AppCompatActivity{
    public static void start(Activity context, int requestCode) {
        Intent intent = new Intent(context, ChildActivity.class);
        context.startActivityForResult(intent, requestCode);
    }
    Button mSomeButton;
    protected void onCreate(Bundle savedInstanceState {
        mSomeButton = (Button) findViewById(R.id.button);
        mSomeButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                setResult(1);
                finish();
            }
        });
    }
}

【问题讨论】:

  • 请添加崩溃日志
  • 其实我简化了这个例子,但是场景是一样的,它给那个对象一个 NullPointerException。
  • 我想它是这样的。当我按下操作栏上的“后退箭头”图标时,它不会返回到父活动,而是实际上重新创建它,因为它在清单中由其父活动名称提到,并且只是调用 startActivity,因此不设置 Parcelabel通过 Intent 对象。当父活动调用该对象上的方法时,它会崩溃并给出 NullPointerException。
  • 问题解决了吗?

标签: android nullpointerexception transparency


【解决方案1】:

将此添加到您在 ChildActivity 中的清单中:

android:parentActivityName=".ParentActivity"

【讨论】:

  • 已添加。请再过一遍。当我按下 On-Bar Navigation 上的后退按钮或从 Child Activity 调用完成时,它不会崩溃,但是当我按下操作栏上的箭头图标(也称为菜单选项(R.id.home)时,它会崩溃。
【解决方案2】:

我不确定这行代码是否可以运行:ChildActivity.start(this, SOME_REQUEST_CODE);

应该是this.startActivityForResult(Intent, RequestCode)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-11-28
    • 1970-01-01
    • 2014-04-25
    • 1970-01-01
    • 1970-01-01
    • 2013-08-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多