5

ここに画像の説明を入力

プロジェクトをコンパイルしようとすると、「FragmentTransaction 型のメソッド add(int, Fragment) は、引数 (int, FragmentPreferences) には適用できません」というエラーが発生します。私の知る限り、PreferenceFragment はフラグメントですか? 私は Android 4.0 用に開発していますが、私のプロジェクトには ViewPager も含まれているため、android-support-v4 ライブラリを使用する必要があります。http://developer.android.com/guide/topics/ui/settings.html#Fragmentでこの例を見つけました:

// Display the fragment as the main content.
        getFragmentManager().beginTransaction()
                .replace(android.R.id.content, new SettingsFragment())
                .commit();

しかし、私はそれを機能させることができません。

私のコード:

case R.id.menu_settings:
    FragmentPreferences prefs = new FragmentPreferences();
    FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
    ft.add(android.R.id.content, prefs);
    ft.commit();
    break;

フラグメント設定:

public class FragmentPreferences extends PreferenceFragment {
    @Override
    public void onCreate(Bundle savedInstanceState){
        super.onCreate(savedInstanceState);
        addPreferencesFromResource(R.xml.preferences);
    }

}
4

3 に答える 3

16

これは、が期待しているものではなく、PreferenceFragmentextendsであるためです。android.app.Fragmentandroid.support.v4.app.Fragmentandroid.support.v4.app.FragmentTransaction

PreferenceFragment現時点では、サポート ライブラリへの公式のバックポートはありません。ただし、UnifiedPreferencesなどのライブラリを使用して、このギャップを埋めることができます。

于 2013-02-25T22:51:10.313 に答える
1

importコードの先頭にあるステートメントを確認してください。使用しているクラスの 1 つが由来である可能性が高く、もう 1 つはそうでsupportはありません。

于 2013-02-25T22:49:22.417 に答える
0

サポート ライブラリへの PreferenceFragment の非公式バックポートを次に示します。最終更新は 2015 年 2 月で、ロリポップ デバイスと互換性があります。android-support-v4-preferencefragment

import android.support.v4.preference.PreferenceFragment;
于 2015-04-23T12:49:54.423 に答える