【发布时间】: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