在我的应用程序中,我有一些布局来编辑任务并选择一个RingTone并将其保存到数据库中。 当我更新任务时,我还要更新铃声名称。我使用铃声选择器,启动一个新的Intent并在onActivityResult()方法中获取所选的铃声uri。
问题是,每当我点击选择新的RingTone页面重新加载并且我丢失了来自数据库的所有填充数据。
我该如何解决这个问题。有没有办法在选择铃声后打开铃声选择器而不重新加载完整的活动?
以下是我打开选择器的方式:
protected void openRingtoneDialog() {
final Intent intent = new Intent(RingtoneManager.ACTION_RINGTONE_PICKER);
intent.putExtra(RingtoneManager.EXTRA_RINGTONE_SHOW_SILENT, false);
intent.putExtra(RingtoneManager.EXTRA_RINGTONE_TYPE, RingtoneManager.TYPE_ALL);
intent.putExtra(RingtoneManager.EXTRA_RINGTONE_TITLE, getString(R.string.ringtone_choose));
if (mAlarmTonUri != null) {
intent.putExtra(RingtoneManager.EXTRA_RINGTONE_EXISTING_URI, mAlarmTonUri);
}
else {
intent.putExtra(RingtoneManager.EXTRA_RINGTONE_EXISTING_URI, (Uri) null);
}
startActivityForResult(intent, RINGTONE_RESULT);
}
在这里,我如何获得所选的铃声。
@Override
protected void onActivityResult(final int requestCode, final int resultCode, final Intent data) {
String ringTonTitle = "";
// Get the result from RingtoneActivity
if (resultCode == RESULT_OK && requestCode == RINGTONE_RESULT) {
mAlarmTonUri = data.getParcelableExtra(RingtoneManager.EXTRA_RINGTONE_PICKED_URI);
if (mAlarmTonUri != null) {
mAlarmTonValue = mAlarmTonUri.toString();
ringTonTitle = RingtoneManager.getRingtone(this, mAlarmTonUri).getTitle(this);
}
else {
ringTonTitle = "unknow";
}
mAlarmTonTextView.setText(ringTonTitle);
}
感谢您的帮助!
答案 0 :(得分:1)
我在我的应用中碰到了这个。我已覆盖onResume
以重新加载我的观看次数,以防我的应用无法进行更改。从铃声选择器回来的是我的onResume
。对我来说,将所有内容从onResume
移到onStart
是安全的。在我的应用程序到达前台或首次启动时它会运行,但是当铃声选择器被解除时它会运行。