当你试图startActivityForResult为此Activity而已launchMode="singleTask"; 它不会返回任何值onActivityResult,当你设置时launchMode="standard"; 一切正常,但系统要求说这Activity必须是singleTask,无论如何要解决这个问题?
我想将此添加到另一个关于resultCode == 0和的问题列表中requestCode == 0.
这是概要:
使用NoteActivity调用.NoteSettingsActivitystartActivityForResult()
我在网上搜索过,当我按下按钮的时候super.onBackPressed(),resultCode == 0.好后进一步研究,似乎它返回代码每次按下后退按钮,但拙劣地修补,经过super.onBackPressed()电话,只是简单finish()的应用onActivityResult()的resultCode仍是等于0.它跟相同requestCode.
此外,我尝试操作清单文件,我做了很多更改只是为了让这项工作,但nothings对我有用.
这是片段.请注意,我已经恢复到我之前的提交,所以我已经失去了我最近的修改,但请注意我写的代码之前我注意到它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);
}
Run Code Online (Sandbox Code Playgroud)
这是检测到活动的时间:
@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)); …Run Code Online (Sandbox Code Playgroud) 当使用 androids 新的活动结果 API 时,回调仅对我触发一次。
class MyFragment : Fragment() {
private val intentLauncher = registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { result: ActivityResult ->
if (result.resultCode == Activity.RESULT_OK) {
...
}
}
}
private fun onClick(id: Long) {
val intent = Intent(context, MyActivity::class.java)
intent.putExtra(MyActivity.ID_EXTRA, id)
intentLauncher.launch(intent)
}
Run Code Online (Sandbox Code Playgroud)
第一次单击片段会启动活动,活动完成后结果会正确传回。但是,当片段再次启动活动时,活动会设置结果并调用完成。但是,片段中的结果回调不会再次触发。
还注意到我不需要包括:
implementation 'androidx.activity:activity-ktx:1.4.0'
implementation 'androidx.fragment:fragment-ktx:1.4.1'
Run Code Online (Sandbox Code Playgroud)
新的活动结果 API 是否附带一些其他依赖项?想知道我正在引入的版本是否还发生了其他奇怪的事情?
编辑:
需要注意的是,只有在使用片段中的新活动结果 api 启动新活动时才会发生这种情况。从活动启动时我没有看到相同的行为。我需要对片段做一些不同的事情吗?
我Activity从ActivityA 开始B startActivityForResult(),ActivityB是半透明的,然后是Activity的A方法
protected void onActivityResult(int requestCode, int resultCode, Intent data) {}
Run Code Online (Sandbox Code Playgroud)
ActivityB 立即开始工作.
请建议.