5

申請書を書いています。有用であるためには、古い Android OS で実行する必要があります。PreferenceScreen を含む options.xml ファイルを取り込む PreferencesActivity を使用して、設定画面を作成しました。設定用のサブメニューはありません (そのため、PreferenceFragment には実際の利点はありません)。

Android 2.1 (2.2 および 2.3、まだ ICS でテストしていません) では、画面は横向きのように正しく表示されます。 エクレア

しかし、Jellybean では次のようになります。 ゼリービーン

ひどいですね。私はレイアウトとして何も定義していません。標準の addPreferencesFromResource() だけです。これの原因が何であるかを知っている人はいますか?それとも解決策?

私の onCreate は次のようになります。

    protected void onCreate(Bundle savedInstanceState) { //
    super.onCreate(savedInstanceState);
    Log.i(TAG, "Options Activity Loaded.");
    setTitle(getString(R.string.optionsTitle));
    addPreferencesFromResource(R.xml.options);
    setupListeners();
}

それ以外はすべて Preference オブジェクトを作成し、クリックされたときに何かを行うメソッドを割り当てるだけです。PreferenceFragment と PreferenceActivity の両方のコードを作成したくありません。最大バージョンの市場シェアにその API がなく、互換性ライブラリに追加されない場合、Google が Fragment API を使用することをどのように期待しているのか理解できません。

4

1 に答える 1

1

アプリケーションは、SharedPreferences の古い機能と新しい機能の両方をサポートできます。古い設定用の Class と新しい設定用の Class を提供できます。それ以上のコードはありません。次のように、アプリの下位互換性を確保できます。

Class spc = Build.VERSION_SDK_INT < Build.VERSION_CODES.HONEYCOMB ? 
    oldPreferenceActivity.class : newFragmentPreferenceActivity.class;

Intent i = new Intent (this, spc);
startActivityForResult (i, SHOW_PREFERENCES); 
于 2012-09-26T11:27:29.320 に答える