【发布时间】:2015-07-10 10:02:21
【问题描述】:
我想将此添加到关于resultCode == 0 和requestCode == 0 的另一个问题列表中。
这里是概要:
NoteActivity 使用startActivityForResult() 调用NoteSettingsActivity。
我在网上搜索过,当我按下返回按钮时super.onBackPressed(),resultCode == 0。好吧,经过进一步研究,似乎只要按下后退按钮,它就会返回此代码,但是在将super.onBackPressed() 调用搞砸之后,只是简单地finish() 应用程序onActivityResult() 的resultCode 仍然等于0。它与requestCode 相同。
另外,我尝试操作清单文件,我做了很多更改只是为了完成这项工作,但对我没有任何作用。
这里是sn-p。请注意,我已经恢复到我之前的提交,所以我丢失了我最近的修改,但是请在我注意到 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 is always 0
- How do I handle the back button when startActivityForResult is active?
- setResult does not work when BACK button pressed
- Android: startActivityForResult always gets a resultCode of 0?
- Android Calendar: onActivityResult's resultCode is always 0
- onActivityResult always returns 0
- onActivityResult() is being called at an unexpected time
- Android - startActivityForResult immediately triggering onActivityResult
- onActivityResult() called prematurely
- Activity result is always 0
- Android: Gallery intent returning resultCode == RESULT_CANCELED Android on activity result always return 0 and null intent
我在我的项目上浪费了很多重要的时间,只是为了弄清楚是什么让 resultCode 和 requestCode 的值失去了我一路发送的值。
我们将不胜感激任何帮助和指导。非常感谢!
【问题讨论】:
-
第二个活动有任何标志吗?
标签: android onactivityresult start-activity