如何使用ViewPager对片段使用首选项?

时间:2012-04-08 22:10:33

标签: android android-fragments sharedpreferences android-viewpager

我正在使用ViewPager来浏览不同的片段。它正在运行,但现在我想为每个片段添加设置,就像以这种方式处理活动一样:

@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    addPreferencesFromResource(R.xml.prefs);
}

但是当我将addPreferencesFromResource(R.xml.prefs);放入我的片段时,Eclipse告诉我addPreferencesFromResource(R.xml.prefs);不存在,如果我使用FragmentActivity则相同。那么,我如何在片段中使用首选项? 我是使用Fragments设计的新手,与你在活动中的表现相比,一切都有很大不同:/

谢谢:)

== EDIT ==

我没有获得FC但它什么也没做,它是调用类LCprefs()的代码,这段代码在片段上:

@Override
    public boolean onOptionsItemSelected(MenuItem item) {
        if(DEBUG) Log.i(TAG, "onOptionsItemSelected(MenuItem item)");
        switch(item.getItemId())
        {
        case R.id.preferences:
            new LCprefs();
            break;
        case R.id.add:
            break;
        case R.id.load:
            break;
        case R.id.save:
            break;
        }
        return false;
    }

这是LCprefs类:

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

    public class LCprefs extends PreferenceFragment{

        String TAG;

        @Override
        public void onCreate(Bundle savedInstanceState) {
            // TODO Auto-generated method stub
            super.onCreate(savedInstanceState);
            Log.i(TAG, "LCprefs onCreate()");
            addPreferencesFromResource(R.xml.prefslc);
        }

    }

位于xml文件夹的prefslc.xml:

<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" >

    <PreferenceCategory android:title="Varios" >

        <CheckBoxPreference
            android:defaultValue="false"
            android:key="cbFullscreen"
            android:summary="Aplicacion fullscreen"
            android:title="Fullscreen" />

    </PreferenceCategory>

</PreferenceScreen>

1 个答案:

答案 0 :(得分:1)

片段必须是PreferencesFragment的实例。链接示例:

public static class PrefsFragment extends PreferenceFragment {

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

        // Load the preferences from an XML resource
        addPreferencesFromResource(R.xml.preferences);
    }
}