addPreference报错

很奇怪的报了一个cast exception

FATAL EXCEPTION: main                                                                                                                                                                                                        
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.augusta.offlinelog/com.augusta.offlinelog.KernelLogPrefActivity}: java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.String  
	at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1956)                                                                                                                                               
	at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1981)                                                                                                                                                
	at android.app.ActivityThread.access$600(ActivityThread.java:123)                                                                                                                                                           
	at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1147)                                                                                                                                                     
	at android.os.Handler.dispatchMessage(Handler.java:99)                                                                                                                                                                      
	at android.os.Looper.loop(Looper.java:137)                                                                                                                                                                                  
	at android.app.ActivityThread.main(ActivityThread.java:4424)                                                                                                                                                                
	at java.lang.reflect.Method.invokeNative(Native Method)                                                                                                                                                                     
	at java.lang.reflect.Method.invoke(Method.java:511)                                                                                                                                                                         
	at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)                                                                                                                                          
	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)                                                                                                                                                             
	at dalvik.system.NativeStart.main(Native Method)                                                                                                                                                                            
Caused by: java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.String                                                                                                                                
	at android.preference.ListPreference.onSetInitialValue(ListPreference.java:278)                                                                                                                                             
	at android.preference.Preference.dispatchSetInitialValue(Preference.java:1309)                                                                                                                                              
	at android.preference.Preference.onAttachedToHierarchy(Preference.java:1124)                                                                                                                                                
	at android.preference.PreferenceGroup.addPreference(PreferenceGroup.java:156)                                                                                                                                               
	at com.augusta.offlinelog.KernelLogPrefActivity.onCreate(KernelLogPrefActivity.java:40)                                                                                                                                     
	at android.app.Activity.performCreate(Activity.java:4465)                                                                                                                                                                   
	at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049)                                                                                                                                              
	at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1920)                                                                                                                                               
	... 11 more                                                                                                                                                                                                                 

报错位置源代码如下

	protected void onCreate(Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		requestWindowFeature(Window.FEATURE_NO_TITLE);
		super.onCreate(savedInstanceState);
		addPreferencesFromResource(R.xml.levelpreference);
		mLevelPrefs = new KernelLogLevelPrefs(this);
		preKernellv = (PreferenceCategory) findPreference(KernelLogLevelPrefs.KERNEL_LEVEL_CATEGORY);

		if(preKernellv != null){
    		m_arryetp = new ListPreference[Prefs.tagArry.length];
    		for(int i = 0; i < Prefs.tagArry.length ; ++i){
    			    String data = mLevelPrefs.getString(KernelLogLevelPrefs.kernellogleveltagArry[i], "5");
    				m_arryetp[i] = new ListPreference(this);
    				m_arryetp[i].setTitle(KernelLogLevelPrefs.kernellogleveltagArry[i]);
    				m_arryetp[i].setSummary(data);
    				m_arryetp[i].setDialogTitle(KernelLogLevelPrefs.kernellogleveltagArry[i]);
    				m_arryetp[i].setEntryValues(R.array.klevel_values);
    				m_arryetp[i].setEntries(R.array.klevel_values);		
    				m_arryetp[i].setDefaultValue(R.string.kernel_level_default);
    				preKernellv.addPreference(m_arryetp[i]);
    				   				
    		}
    	}	
 		
	}
在源码中查看错误位置的代码如下

 protected void onSetInitialValue(boolean restoreValue, Object defaultValue) {
        setValue(restoreValue ? getPersistedString(mValue) : (String) defaultValue);
    }

目测是吧defaultValue转换成String报错了.但是这个default我是在strings.xml里定义好了的一个string

<string name="kernel_level_default">5</string>

很奇怪 为什么在源码的红色部分确成了integer.

m_arryetp[i].setDefaultValue(R.string.kernel_level_default);
修改为

m_arryetp[i].setDefaultValue("5");
就恢复正常.




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
if (cursor != null) { final PreferenceGroup apnPrefList = (PreferenceGroup) findPreference("apn_list"); apnPrefList.removeAll(); final ArrayList<ApnPreference> apnList = new ArrayList<ApnPreference>(); final ArrayList<ApnPreference> mmsApnList = new ArrayList<ApnPreference>(); mSelectedKey = getSelectedApnKey(); cursor.moveToFirst(); while (!cursor.isAfterLast()) { final String name = cursor.getString(NAME_INDEX); final String apn = cursor.getString(APN_INDEX); final String key = cursor.getString(ID_INDEX); final String type = cursor.getString(TYPES_INDEX); final int edited = cursor.getInt(EDITED_INDEX); mMvnoType = cursor.getString(MVNO_TYPE_INDEX); mMvnoMatchData = cursor.getString(MVNO_MATCH_DATA_INDEX); final ApnPreference pref = new ApnPreference(getPrefContext()); pref.setKey(key); pref.setTitle(name); pref.setPersistent(false); pref.setOnPreferenceChangeListener(this); pref.setSubId(subId); if (mHidePresetApnDetails && edited == Telephony.Carriers.UNEDITED) { pref.setHideDetails(); } else { pref.setSummary(apn); } final boolean selectable = ((type == null) || type.contains(ApnSetting.TYPE_DEFAULT_STRING)); pref.setSelectable(selectable); if (selectable) { if ((mSelectedKey != null) && mSelectedKey.equals(key)) { pref.setChecked(); } apnList.add(pref); } else { mmsApnList.add(pref); } cursor.moveToNext(); } cursor.close(); for (Preference preference : apnList) { apnPrefList.addPreference(preference); } for (Preference preference : mmsApnList) { apnPrefList.addPreference(preference); } } }
07-14
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值