android 副标题,android 用RingtonePreference显示副标题 summary的注意事项

在用RingtonePreference显示副标题 summary,如果不实时更新副标题,即不实现OnPreferenceChangeListener接口时,系统会自动保存你所选择的提示音。如果需要实时更新副标题,必须实现OnPreferenceChangeListener接口,但在接口里需要手动保存所选的铃声,少说费话,代码如下,注意红色代码:

SettingsRing .java

import android.app.ActionBar;

import android.app.Activity;

import android.content.SharedPreferences;

import android.media.Ringtone;

import android.media.RingtoneManager;

import android.net.Uri;

import android.os.Bundle;

import android.preference.Preference;

import android.preference.PreferenceFragment;

import android.preference.RingtonePreference;

import android.preference.Preference.OnPreferenceChangeListener;

import android.view.View;

import android.view.View.OnClickListener;

public class SettingsRing extends Activity {

// private ListView mListView = null;

// private ArrayAdapter mAdapter;

// private boolean mCheckedItem[];

// private SystemConfig mConfig;

@Override

protected void onCreate(Bundle savedInstanceState) {

// TODO Auto-generated method stub

super.onCreate(savedInstanceState);

getFragmentManager().beginTransaction()

.replace(android.R.id.content, new PrefsFragement()).commit(); //显示PreferenceFragment界面

}

public static class PrefsFragement extends PreferenceFragment implements

OnPreferenceChangeListener {

private static final String KEY_RING_TONE = "ringtone";

private RingtonePreference mRingTone;

@Override

public void onCreate(Bundle savedInstanceState) {

// TODO Auto-generated method stub

super.onCreate(savedInstanceState);

addPreferencesFromResource(R.xml.preference);

mRingTone = (RingtonePreference) findPreference(KEY_RING_TONE);

Uri uri = Uri.parse(mRingTone.getSharedPreferences().getString(

KEY_RING_TONE, ""));

mRingTone.setSummary(getRingtonName(uri));

mRingTone.setOnPreferenceChangeListener(this);

}

@Override

public boolean onPreferenceChange(Preference preference, Object newValue) {

// TODO Auto-generated method stub

if (preference == mRingTone) {

preference.setSummary(getRingtonName(Uri.parse(newValue.toString())));

// 此处必须加上,否则不会保存

SharedPreferences sp = preference.getPreferenceManager().getSharedPreferences();

sp.edit().putString(preference.getKey(), newValue.toString()).commit();

}

return false;

}

// 获取提示音名称

public String getRingtonName(Uri uri) {

Ringtone r = RingtoneManager.getRingtone(getActivity(), uri);

return r.getTitle(getActivity());

}

}

preference.xml

android:key="ringtone"

android:showDefault="true"

android:showSilent="true"

android:title="提示音" />

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值