Android铃声选择器刷新活动,为什么?

时间:2013-07-19 10:23:22

标签: java android android-activity

在我的应用程序中,我有一些布局来编辑任务并选择一个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);
    }

感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

我在我的应用中碰到了这个。我已覆盖onResume以重新加载我的观看次数,以防我的应用无法进行更改。从铃声选择器回来的是我的onResume。对我来说,将所有内容从onResume移到onStart是安全的。在我的应用程序到达前台或首次启动时它会运行,但是当铃声选择器被解除时它会运行。