3

也许这个问题被问了百万次。但经过百万次尝试后我仍然出错。

我用它来设置首选项

PreferenceFragment fragment;
try {
        getClass().getMethod("getFragmentManager");
        AddResourceApi11AndGreater();
    } catch (NoSuchMethodException e) { //Api < 11
        AddResourceApiLessThan11();
    }
  @SuppressWarnings("deprecation")
protected void AddResourceApiLessThan11()
{
    addPreferencesFromResource(prefs);
}

@TargetApi(11)
protected void AddResourceApi11AndGreater()
{
    PreferenceFragment fr = new PF();
    fragment = fr;
    getFragmentManager().beginTransaction().replace(android.R.id.content, fr).commit();
}


@TargetApi(11)
public static class PF extends PreferenceFragment
{       
    @Override
    public void onCreate(final Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        addPreferencesFromResource(AyarlarScreen.prefs); 
    }
}

我仍然从 findPreference 和 fragment.findPreference 得到 null

(我是 4.0.4 android。所以它使用 Api11andGreter。所以我保存片段 ref,然后使用它来获取首选项。如果我手动使用 api11andlower,我可以获得偏好)

4

0 回答 0