2013-02-25 10 views
5

enter image description hereがPreferenceFragmentを動作させることはできません(コンパイルエラー)

私は私のプロジェクトをコンパイルしようとすると、私はエラーを取得しています:「メソッドは、型FragmentTransactionに(int型、フラグメント)を追加では適用されません引数(int、FragmentPreferences) "を参照してください。私の知る限り、PreferenceFragmentはFragmentですか?私はアンドロイド4.0のために開発していますが、私のプロジェクトはViewPagerも含んでいるので、私はアンドロイドサポート-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; 

FragmentPreferences:

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

} 

答えて

16

android.support.v4.app.FragmentTransactionが予期しているandroid.support.v4.app.Fragmentではなく、PreferenceFragmentandroid.app.Fragmentであるためです。

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

1

あなたのコードの上部にimport文を確認してください。おそらく、使用しているクラスの1つはsupportですが、他のクラスはありません。

+1

これらのクラスのいずれかを変更した場合、ビューページが破損します。 – user1888162

+0

上記のianhanniballakeが示唆しているように、代替案を探す必要があります。あなたが本当にフラグメントを必要としない場合は、その間に 'PreferenceActivity'を使うことに頼ります。 –

0

ここには、サポートライブラリのPreferenceFragmentの非公式なバックポートがあります。最終更新日は2015年2月&で、ロリポップ端末に対応しています。 android-support-v4-preferencefragment

import android.support.v4.preference.PreferenceFragment; 
+0

私の視点では、悪い解決策! – Mateus

+0

なぜそれが悪い解決策であるかを説明するのに気をつけますか? –

+0

私が長年検索した解決策。 –

-1

だけで簡単に更新:環境設定はサポートLibrrayで今があります。

compile "com.android.support:preference-v7:$supportVersion" 

は楽しみを持っています。

関連する問題