Android – 首选项 – ClassCastException

Android – 首选项 – ClassCastException,第1张

概述我测试了一个标准的Preference教程,没有任何问题..但是在本教程中(在所有类似的例子中),Preferences活动意图从主活动中开始… 我试图在我的应用程序中复制简单的测试代码,但是Preferences活动意图是从List活动中启动的…(来自菜单栏) public class TrainingListActivity extends FragmentActivity implement 我测试了一个标准的Preference教程,没有任何问题..但是在本教程中(在所有类似的例子中),Preferences活动意图从主活动中开始…

我试图在我的应用程序中复制简单的测试代码,但是Preferences活动意图是从List活动中启动的…(来自菜单栏)

public class TrainingListActivity extends FragmentActivity implements        TrainingListFragment.Callbacks {    // .....    public voID settingsActivity() {        Intent settingsActivity = new Intent(this,Preferences.class);        startActivity(settingsActivity);    }}

所以我将它添加到manifest.xml中,表明TrainingListActivity为父活动

<activity    androID:name="com.swimtechtest.swimmer.TrainingListActivity"    androID:label="@string/app_name" >    androID:theme="@androID:style/theme.Black.NoTitlebar" >    <intent-filter>        <action androID:name="androID.intent.action.MAIN" />        <category androID:name="androID.intent.category.LAUNCHER" />    </intent-filter></activity><activity    androID:name="com.swimtechtest.swimmer.Preferences"    androID:label="@string/Title_preferences"    androID:parentActivityname=".Preferences" >    <Meta-data        androID:name="androID.support.PARENT_ACTIVITY"        androID:value=".TrainingListActivity" /></activity>

但是在运行它时,我收到运行时错误:

androID.preference.Preference cannot be cast to androID.preference.GenericInflater$Parent

这似乎是在Preferences onCreate()方法结束时,在setDefaultValues上提出的……任何线索?

@OverrIDepublic voID onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    getFragmentManager().beginTransaction()        .replace(androID.R.ID.content,new PrefsFragment()).commit();    PreferenceManager.setDefaultValues(Preferences.this,R.xml.preferences,false);}

的preferences.xml

<?xml version="1.0" enCoding="utf-8"?><PreferenceScreen xmlns:androID="http://schemas.androID.com/apk/res/androID" ><Preferencecategory androID:title="My List of Preferences" >    <CheckBoxPreference        androID:defaultValue="false"        androID:key="checkBoxPref"        androID:summary="This preference can be true or false"        androID:title="CheckBox Preference" />    <ListPreference        androID:defaultValue="digiGreen"        androID:entrIEs="@array/ListArray"        androID:entryValues="@array/ListValues"        androID:key="ListPref"        androID:summary="This preference allows to select an item in a array"        androID:title="Your favorite Pet" />    <EditTextPreference        androID:name="EditText Preference"        androID:defaultValue="nothing"        androID:key="editTextPref"        androID:summary="This allows you to enter a string"        androID:title="Edit This Text" />    <ringtonePreference        androID:name="ringtone Preference"        androID:key="ringtonePref"        androID:summary="Select a ringtone"        androID:title="ringtones" />    <PreferenceScreen        androID:key="SecondPrefScreen"        androID:summary="This is a sub PreferenceScreen"        androID:title="Secondary Level" >        <intent            androID:action="androID.intent.action.VIEW"            androID:targetClass="com.example.preferencesexample.Preferences2"            androID:targetPackage="com.example.preferencesexample" />    </PreferenceScreen>    <Preference        androID:key="customPref"        androID:summary="This works almost like a button"        androID:title="Custom Preference" /></Preferencecategory></PreferenceScreen>

consolelog

FATAL EXCEPTION: main Process: com.swimtechtest.swimmer,PID: 9690 java.lang.RuntimeException: Unable to start activity      ComponentInfo{com.swimtechtest.swimmer/com.swimtechtest.swimmer.Preferences}:    java.lang.classCastException: androID.preference.Preference cannot be cast to    androID.preference.GenericInflater$Parentat androID.app.ActivityThread.performlaunchActivity(ActivityThread.java:2195)at androID.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245)at androID.app.ActivityThread.access0(ActivityThread.java:135)at androID.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)at androID.os.Handler.dispatchMessage(Handler.java:102)at androID.os.Looper.loop(Looper.java:136)     ....     Caused by: java.lang.classCastException: androID.preference.Preference cannot be cast to androID.preference.GenericInflater$Parentat androID.preference.GenericInflater.inflate(GenericInflater.java:320)at androID.preference.GenericInflater.inflate(GenericInflater.java:263)at androID.preference.PreferenceManager.inflateFromresource(PreferenceManager.java:272)at androID.preference.PreferenceManager.setDefaultValues(PreferenceManager.java:485)at androID.preference.PreferenceManager.setDefaultValues(PreferenceManager.java:444)at com.swimtechtest.swimmer.Preferences.onCreate(Preferences.java:19)at androID.app.Activity.performCreate(Activity.java:5231)at androID.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)at androID.app.ActivityThread.performlaunchActivity(ActivityThread.java:2159)
解决方法@H_419_49@ 你的意思是 :

<activity    androID:name="com.swimtechtest.swimmer.Preferences"    androID:label="@string/Title_preferences"    androID:parentActivityname="com.swimtechtest.swimmer.TrainingListActivity" >    <Meta-data        androID:name="androID.support.PARENT_ACTIVITY"        androID:value=".TrainingListActivity" /></activity>

总结

以上是内存溢出为你收集整理的Android – 首选项 – ClassCastException全部内容,希望文章能够帮你解决Android – 首选项 – ClassCastException所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://www.outofmemory.cn/web/1125124.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-30
下一篇 2022-05-30

发表评论

登录后才能评论

评论列表(0条)

保存