【发布时间】:2013-05-04 19:03:11
【问题描述】:
我正在创建一个应用程序,其中包含 3 个活动,例如 A、B 和 C。活动 A 是主要活动,它在应用程序打开时启动。
使用 startActivityForResult(intent, 1); 将活动 A 称为活动 B; Activity B返回结果,成功捕获,在Activity A的onActivityResult中,我使用startActivityForResult(intent2, 2);启动Activity C;
这是我的活动 A 的 onActivityResult
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data){
Log.d("MAIN","Inside on activity result requestCode is : " + requestCode);
if(requestCode == 1){
if(resultCode == RESULT_OK){
Log.d("MAINACT", "Inside RESULT CODE OK");
if(data.getStringExtra("puzzleID")!=null){
Log.d("MAINACT", "Inside puzzle has been selected");
String puzzleIdResult = data.getStringExtra("puzzleID");
Intent puzzleIntent = new Intent(MainActivity.this, TrialActivity.class);
puzzleIntent.putExtra("puzzleID", puzzleIdResult);
startActivityForResult(puzzleIntent, 2);
}
}
}else if(requestCode == 2){
Log.d("MAINACT", "Inside request code is 2 result code is : " + resultCode);
if(resultCode == 0){
if(data!=null){
Log.d("MAINACT", "Inside STATUS NOT NULL");
String puzzleStatus = data.getStringExtra("status");
Log.d("MAINACT", "Puzzle status retrieved is : " + puzzleStatus);
if(puzzleStatus.equals("pause")){
Log.d("MAINACT", "Inside puzzle status is paused");
}
}else{
Log.d("MAINACT", "Data is null!!");
}
}
这是Activity C的返回结果Intent
@Override
protected void onPause() {
super.onPause();
Log.d(TRIALTAG, "On Pause CALLED");
Log.d(TRIALTAG, "Sending Intent");
String puzzleID = Integer.toString(puzzle_ID);
Intent returnPause = new Intent();
returnPause.putExtra("status", "pause");
returnPause.putExtra("puzzleid", puzzleID);
if(getParent() == null){
setResult(Activity.RESULT_OK, returnPause);
}else{
getParent().setResult(Activity.RESULT_OK, returnPause);
}
finish();
}
从活动 C 返回时,我得到一个空指针异常和语句。
java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=2, result=0, data=null} to activity
{com.mypackagename.sudoku/com.mypackagename.sudoku.MainActivity}: java.lang.NullPointerException
我稍后输入了 data!=null 检查以防止崩溃。我得到数据为空!!现在每次我在活动 C 中暂停时。我在阅读了关于 SO 的其他解决方案后尝试了 getParent 方法,但这无济于事。为什么我的数据在 Activity B 中设置而不在 Activity C 中设置?这是我的第一个完整应用程序,请原谅任何无知。
【问题讨论】:
-
请缩进代码
-
糟糕的阅读你的代码老兄..
-
抱歉缩进效果不佳..应该让它更清晰..@Shobhit Puri 非常感谢你清理它..下次我会自己做..
标签: android android-intent android-activity