Neo*_*rge 10 android start-activity onactivityresult
我想将此添加到另一个关于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));
intent.putExtra(NoteExtrasKey.EXTRA_NOTE_ID , mTargetNoteID);
if(getParent() != null)
getParent().setResult(Activity.RESULT_OK, intent);
else
setResult(Activity.RESULT_OK, intent);
super.onBackPressed();
}
Run Code Online (Sandbox Code Playgroud)
这是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;
}
}
Run Code Online (Sandbox Code Playgroud)
resultCoderequestCode当我运行它时,等于0和requals -1.我检查了传递给它的意图,它不是null.
以下是与此问题非常相关的问题.他们都没有工作:
我正在为我的项目工作失去很多重要时间,只是弄清楚是什么让resultCode和requestCode的值失去了我在路上发送的值.
任何帮助和指导将不胜感激.非常感谢你!
Sim*_*mon 23
就我而言,由于两个原因,我得到了resultCode == 0错误.
首先,我从片段而不是从另一个活动复制了该方法:
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
Run Code Online (Sandbox Code Playgroud)
防止这种情况发生的一个好方法是使用@Override您的方法,以便您知道您正在覆盖onActivityResult方法签名的默认活动.
使用正确的签名:
public void onActivityResult(int requestCode, int resultCode, Intent data) {
Run Code Online (Sandbox Code Playgroud)
其次,我这样做:
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();
Run Code Online (Sandbox Code Playgroud)
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();
Run Code Online (Sandbox Code Playgroud)
正确的签名是
public void onActivityResult(int requestCode, int resultCode, Intent data) {
Run Code Online (Sandbox Code Playgroud)
您混淆了请求和结果。
| 归档时间: |
|
| 查看次数: |
15535 次 |
| 最近记录: |