gpt4 book ai didi

android - resultCode 始终为 0,request 始终为 -1,. Activity .onActivityResult();

转载 作者:塔克拉玛干 更新时间:2023-11-02 07:53:39 25 4
gpt4 key购买 nike

我想将此添加到另一个关于 resultCode == 0requestCode == 0 的问题列表中。

内容简介:NoteActivity 使用 startActivityForResult() 调用 NoteSettingsActivity

我在网上搜索过,当我在 super.onBackPressed() 时按下后退按钮时,resultCode == 0。经过进一步研究,它似乎在按下后退按钮时返回此代码,但是在破坏了 super.onBackPressed() 调用之后,只是简单地 finish() 应用程序onActivityResult()resultCode 仍然等于 0。它与 requestCode 相同。

此外,我尝试操纵 list 文件,我做了很多更改只是为了让这项工作有效,但对我来说没有任何效果。

这是 fragment 。请注意,我已经恢复到我之前的提交,所以我丢失了我最近的修改,但是在我注意到 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。我已经检查了传递给它的 Intent ,它不为空。

以下是与这个问题非常相关的问题。它们都不起作用:

我在我的项目上浪费了很多重要的时间,只是想弄清楚是什么让 resultCode 和 requestCode 的值失去了我一路发送的值。

任何帮助和指导将不胜感激。非常感谢!

最佳答案

在我的例子中,由于两个原因,我得到了 resultCode == 0 错误。

首先,我从一个 fragment 而不是另一个 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();

关于android - resultCode 始终为 0,request 始终为 -1,. Activity .onActivityResult();,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29972183/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com