我想将这个问题添加到另一个有关 resultCode == 0
和 requestCode == 0
的问题列表中。
以下是概述: NoteActivity
使用startActivityForResult()
调用 NoteSettingsActivity
。
我已经搜索了网上内容,发现当我按下返回按钮时,使用 super.onBackPressed()
,resultCode == 0
。进一步研究后发现,无论何时按下后退按钮,它似乎都会返回此代码,但是在搞砸了 super.onBackPressed()
调用并仅简单地使用 finish()
应用程序后,onActivityResult()
的 resultCode
仍然等于 0。对于requestCode
也是同样情况。
此外,我尝试操作清单文件,但所做的许多更改都不能使它正常工作。
以下是摘录。请注意,我已恢复到以前的提交状态,因此我失去了最近的修改,但请查看我之前编写的代码,注意resultCode
始终等于 0 (ACTIVITY_CANCELED
)。
@Override
public void onNoteSettingsActivityCalled(Note note)
{
Intent intent = new Intent(this, NoteSettingsActivity.class);
intent.putExtra(NoteExtrasKey.EXTRA_NOTE_ID, note.getNoteID());
startActivityForResult(intent, NoteRequest.REQUEST_UPDATE_SETTINGS);
}
这是当检测到返回按钮按下时的情况:
@Override
public void onBackPressed()
{
Log.i(NoteApplication.TAG, "NoteSettingsActivity.onBackPressed() has been called.");
Intent intent = new Intent();
intent.putExtra(NoteExtrasKey.EXTRA_NOTE_REMINDENABLED , mRemindEnabled);
intent.putExtra(NoteExtrasKey.EXTRA_NOTE_REMINDEVERY , mDaysSelected);
intent.putExtra(NoteExtrasKey.EXTRA_NOTE_REMINDON , String.valueOf(mRemindDateTime));
intent.putExtra(NoteExtrasKey.EXTRA_NOTE_ID , mTargetNoteID);
if(getParent() != null)
getParent().setResult(Activity.RESULT_OK, intent);
else
setResult(Activity.RESULT_OK, intent);
super.onBackPressed();
}
这就是NoteActivity如何接收到返回的调用。
@Override
public void onActivityResult(int result, int request, Intent intent)
{
super.onActivityResult(result, request, intent);
Log.i(NoteApplication.TAG, "NoteActivity.onActivityResult() has been called.");
Log.i(NoteApplication.TAG, "NoteActivity.onActivityResult() result = " + result + " request = " + request);
if(result == Activity.RESULT_CANCELED)
return;
switch(request)
{
case NoteRequest.REQUEST_UPDATE_SETTINGS:
if(intent == null) return;
int noteID = intent.getIntExtra(NoteExtrasKey.EXTRA_NOTE_ID, -1);
String remindOnString = intent.getStringExtra(NoteExtrasKey.EXTRA_NOTE_REMINDON);
if(remindOnString != null && !remindOnString.equals(""))
mRemindDateTime = Timestamp.valueOf(remindOnString);
mHasSettingsEnabled = true;
mRemindEnabled = intent.getBooleanExtra(NoteExtrasKey.EXTRA_NOTE_REMINDENABLED, false);
mSelectedDays = intent.getIntegerArrayListExtra(NoteExtrasKey.EXTRA_NOTE_REMINDEVERY);
if(noteID < 0)
{
Note note = mNoteDatabaseHelper.getNote(noteID);
note.setRemindEnabled(mRemindEnabled);
note.remindEvery(mSelectedDays);
note.remindOn(mRemindDateTime);
onNoteItemUpdated(note);
}
Log.i(NoteApplication.TAG, "NoteActivity.onActivityResult() NoteRequest.REQUEST_UPDATE_SETTINGS called.");
break;
default:
Log.i(NoteApplication.TAG, "NoteActivity.onActivityResult() : unknown request code = " + request);
break;
}
}
当我运行时,resultCode
等于0,requestCode
等于-1。我已经检查了传递的意图,它不为空。
以下问题与此问题非常相关,但没有一个有效:
- Android onActivityResult总是返回0
- 如何在startActivityForResult活动期间处理返回键?
- 按下BACK键时setResult无效
- Android:startActivityForResult的resultCode总是为0?
- Android Calendar:onActivityResult的resultCode总是0
- onActivityResult总是返回0
- onActivityResult()在意外的时间被调用
- Android-startActivityForResult立即触发onActivityResult
- onActivityResult()过早调用
- Activity结果始终为0
- Android:Gallery意图返回resultCode == RESULT_CANCELED Android on activity result总是返回0和null intent
我花费了很多重要的时间在我的项目上,只是弄清楚什么导致了resultCode和requestCode的值在传递过程中丢失。
任何帮助和指导将不胜感激。非常感谢!