Android 未在片段中调用onActivityResult(),活动完成
我在一个活动中有一个片段,我正在使用一个按钮使用铃声选择器选择通知声音:Android 未在片段中调用onActivityResult(),活动完成,android,android-fragments,Android,Android Fragments,我在一个活动中有一个片段,我正在使用一个按钮使用铃声选择器选择通知声音: selectSound.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(RingtoneManager.ACTION_RINGTONE_PICKER);
selectSound.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(RingtoneManager.ACTION_RINGTONE_PICKER);
intent.putExtra(RingtoneManager.EXTRA_RINGTONE_TYPE, RingtoneManager.TYPE_NOTIFICATION);
intent.putExtra(RingtoneManager.EXTRA_RINGTONE_TITLE, "Select Tone");
if (notification != null) {
intent.putExtra(RingtoneManager.EXTRA_RINGTONE_EXISTING_URI, (Uri) notification);
}
Log.v("TASKS", "Starting Ringtone picker for reminders");
startActivityForResult(intent, 5001);
}
});
下面是片段中我的onActivityResult:
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
Log.v("TASKS", "onActivityResult in ReminderSettings: " + requestCode);
if (resultCode == Activity.RESULT_OK && requestCode == 5001)
{
Uri uri = data.getParcelableExtra(RingtoneManager.EXTRA_RINGTONE_PICKED_URI);
SharedPreferences settings =
mActivity.getSharedPreferences("SETTINGS", Context.MODE_PRIVATE);
Editor editor = settings.edit();
if (uri != null)
{
editor.putString("NOTIFICATION_SOUND", uri.toString());
}
else
{
editor.putString("NOTIFICATION_SOUND", null);
}
editor.commit();
}
}
我的活动具有onActivityResult,但它确实会调用未处理的结果:
@Override
protected void onActivityResult(
int requestCode, int resultCode, Intent data) {
...
super.onActivityResult(requestCode, resultCode, data);
}
奇怪的是,在启动并选择铃声之后,片段中的activityresult或在调试时调用activity,并且该活动似乎已完成-Logcat上没有强制关闭或异常。我现在已经在两个不同的设备上测试了这一点,得到了相同的结果-如果相关,我将使用ActionBarSherlock获取片段。删除此代码,然后重试一次super.onActivityResultrequestCode、resultCode、data;请尝试在activity而不是fragment.tryo中处理onActivityResult,以将日志放在调用super之前,并查看是否显示日志。我已将日志记录语句移动到fragment和activity中onActivityResult的第一行,并再次调试,两个方法都未被调用