PreferenceFragment无法从XML加载(ClassCastException)

时间:2013-05-11 17:17:46

标签: android

我在使用XML加载PreferenceFragment时遇到了一些困难。 它不断抛出 ClassCastException “PreferenceFragmentClass无法强制转换为android.support.v4.app.Fragment”。 该代码旨在在API14及更高版本上运行。

这是我的代码:

import android.os.Bundle;
import android.preference.PreferenceFragment;

public class SettingsFragment extends PreferenceFragment {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        addPreferencesFromResource(R.xml.settings);

    }   
}

以下是使用SettingsFragment的代码:

import android.app.ActionBar;
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import android.support.v4.view.ViewPager;

public class FragmentsSetup extends FragmentActivity {

    private ViewPager viewPager;
    private TabsAdapter tabsAdapter;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        viewPager = new ViewPager(this);
        viewPager.setId(R.id.pager);
        setContentView(viewPager);

        final ActionBar actionBar = getActionBar();
        actionBar.setDisplayShowTitleEnabled(false);
        actionBar.setDisplayShowHomeEnabled(false);
        actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);

        tabsAdapter = new TabsAdapter(this, viewPager);
        tabsAdapter.addTab(actionBar.newTab().setText(getString(R.string.forwarding_tab).toUpperCase()), ForwardingFragment.class, null);
        tabsAdapter.addTab(actionBar.newTab().setText(getString(R.string.settings_tab).toUpperCase()), SettingsFragment.class, null);
    }
}                        

任何提示都将不胜感激。

2 个答案:

答案 0 :(得分:2)

SettingsFragment继承自PreferenceFragmentPreferenceFragment来自片段的本机API Level 11实现。但是,FragmentsSetup继承自{1}},来自Android支持包的片段后端。

这种组合不起作用。

如果您打算支持早于API级别11的设备,则无法使用FragmentActivity。此外,我不确定PreferenceFragment是否在PreferenceFragment之外工作(可能,但我从未尝试过)。

答案 1 :(得分:0)

如果您正在为Android 3.0(API级别11)及更高版本开发,则应使用PreferenceFragment显示您的Preference对象列表。 您还可以为任何活动添加PreferenceFragment - 您不需要使用PreferenceActivity。

请参阅此处的文档: https://developer.android.com/guide/topics/ui/settings.html