resultCode 始终为 0,request 始终为 -1,. Activity.onActivityResult();
resultCode is always 0 and request is always -1, . Activity.onActivityResult();
我想将此添加到另一个关于 resultCode == 0
和 requestCode == 0
的问题列表中。
概要如下:
NoteActivity
使用 startActivityForResult()
调用 NoteSettingsActivity
。
我在网上搜索过,当我在 super.onBackPressed()
时按下后退按钮时,resultCode == 0
。好吧,经过进一步研究,似乎 returns 每当按下后退按钮时,这段代码就会出现,但是在 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);
}
这是 activity 检测到后退按键的时间:
@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 当我 运行 这个。我已经检查了传递给它的意图,它不为空。
以下是与这个问题非常相关的问题。 None 他们工作:
- Android onActivityResult is always 0
- 当startActivityForResult为
活动?
- 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 立即触发
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 的值失去了我一路发送的值。
如有任何帮助和指导,我们将不胜感激。非常感谢!
对 super.onBackPressed()
的调用最终将设置结果代码并将其发送回调用 activity。将该调用替换为对 finish()
的调用,您应该会得到所需的结果代码。
希望对您有所帮助!
正确的签名是
public void onActivityResult(int requestCode, int resultCode, Intent data) {
您混淆了请求和结果。
从设备上卸载应用程序时遇到同样的问题。它通过放置解决了:
intentObject.putExtra(Intent.EXTRA_RETURN_RESULT, 真);在你做 startActivityForResult 之前。
在我的例子中,由于两个原因,我得到了 resultCode == 0 错误。
首先,我从一个片段而不是另一个片段中复制了方法 activity:
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
防止这种情况发生的一个好方法是 @Override
你的方法,这样你就知道你正在覆盖默认的 activity onActivityResult 方法签名。
使用正确的签名:
public void onActivityResult(int requestCode, int resultCode, Intent data) {
其次,我是这样做的:
super.onBackPressed();
Intent intent = new Intent();
intent.putExtra(getString(R.string.like_count), people.size());
Log.e(TAG, people.size() +" people ");
setResult(RESULT_OK, intent);
finish();
super.onBackPressed() 在实际设置之前设置了 resultCode,因此结果为 0。
一个简单的修复使其正常工作:
Intent intent = new Intent();
intent.putExtra(getString(R.string.like_count), people.size());
Log.e(TAG, people.size() +" people ");
setResult(RESULT_OK, intent);
super.onBackPressed();
对于 The Android Big Nerd Ranch 书中的来者,这可能是您代码中的错字,请确保您比较正确:
if (requestCode == REQUEST_CODE_CHEAT) {
if (RESULT_OK == resultCode) {...}
...
}
提醒: RESULT_OK
总是-1,它的存在意味着 setResult()
是从 child Activity 调用的。
我知道我迟到了,但是:
我遇到了 sam 问题,对我来说它不起作用,因为我在设置结果之前调用 onBackPressedDispatcher.onBackPressed()
。
像这样:
override fun onBackPressed() {
onBackPressedDispatcher.onBackPressed() // <---- PROBLEM
val intent = Intent()
intent.putExtra("KEY", "VALUE"))
setResult(RESULT_OK, intent);
// AND here I tried with this calls without luck. -> requireActivity().finish() or super.onBackPressed()
}
我想将此添加到另一个关于 resultCode == 0
和 requestCode == 0
的问题列表中。
概要如下:
NoteActivity
使用 startActivityForResult()
调用 NoteSettingsActivity
。
我在网上搜索过,当我在 super.onBackPressed()
时按下后退按钮时,resultCode == 0
。好吧,经过进一步研究,似乎 returns 每当按下后退按钮时,这段代码就会出现,但是在 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);
}
这是 activity 检测到后退按键的时间:
@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 当我 运行 这个。我已经检查了传递给它的意图,它不为空。
以下是与这个问题非常相关的问题。 None 他们工作:
- Android onActivityResult is always 0
- 当startActivityForResult为 活动?
- 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 立即触发 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 的值失去了我一路发送的值。
如有任何帮助和指导,我们将不胜感激。非常感谢!
对 super.onBackPressed()
的调用最终将设置结果代码并将其发送回调用 activity。将该调用替换为对 finish()
的调用,您应该会得到所需的结果代码。
希望对您有所帮助!
正确的签名是
public void onActivityResult(int requestCode, int resultCode, Intent data) {
您混淆了请求和结果。
从设备上卸载应用程序时遇到同样的问题。它通过放置解决了: intentObject.putExtra(Intent.EXTRA_RETURN_RESULT, 真);在你做 startActivityForResult 之前。
在我的例子中,由于两个原因,我得到了 resultCode == 0 错误。
首先,我从一个片段而不是另一个片段中复制了方法 activity:
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
防止这种情况发生的一个好方法是 @Override
你的方法,这样你就知道你正在覆盖默认的 activity onActivityResult 方法签名。
使用正确的签名:
public void onActivityResult(int requestCode, int resultCode, Intent data) {
其次,我是这样做的:
super.onBackPressed();
Intent intent = new Intent();
intent.putExtra(getString(R.string.like_count), people.size());
Log.e(TAG, people.size() +" people ");
setResult(RESULT_OK, intent);
finish();
super.onBackPressed() 在实际设置之前设置了 resultCode,因此结果为 0。
一个简单的修复使其正常工作:
Intent intent = new Intent();
intent.putExtra(getString(R.string.like_count), people.size());
Log.e(TAG, people.size() +" people ");
setResult(RESULT_OK, intent);
super.onBackPressed();
对于 The Android Big Nerd Ranch 书中的来者,这可能是您代码中的错字,请确保您比较正确:
if (requestCode == REQUEST_CODE_CHEAT) {
if (RESULT_OK == resultCode) {...}
...
}
提醒: RESULT_OK
总是-1,它的存在意味着 setResult()
是从 child Activity 调用的。
我知道我迟到了,但是:
我遇到了 sam 问题,对我来说它不起作用,因为我在设置结果之前调用 onBackPressedDispatcher.onBackPressed()
。
像这样:
override fun onBackPressed() {
onBackPressedDispatcher.onBackPressed() // <---- PROBLEM
val intent = Intent()
intent.putExtra("KEY", "VALUE"))
setResult(RESULT_OK, intent);
// AND here I tried with this calls without luck. -> requireActivity().finish() or super.onBackPressed()
}