ヘッダーが 1 つしかない場合は、PreferenceActivity のヘッダーをスキップする 質問する

ヘッダーが 1 つしかない場合は、PreferenceActivity のヘッダーをスキップする 質問する

Honeycomb やタブレット サイズの ICS で設定画面が壊れないように、アプリに preference-headers を追加しました。ただし、現時点ではヘッダーが 1 つしかないため、電話サイズのデバイスでは、エントリが 1 つしかないヘッダー画面をクリックする必要があります。ヘッダーが 1 つしかない場合に、ヘッダー画面をスキップして、大画面ではヘッダー画面を表示するように Android に指示する簡単な方法はありますか?

標準の連絡先アプリではこれがうまく機能しているようですが、ソースそしてそれがどのように行われているのか理解できません。

ベストアンサー1

PreferenceFragments の 1 つをデフォルトとして設定することで、ヘッダーをスキップできます。

見てみると設定アクティビティ.javaソースには、次の 2 つの追加項目があります。

/**
 * When starting this activity, the invoking Intent can contain this extra
 * string to specify which fragment should be initially displayed.
 */
public static final String EXTRA_SHOW_FRAGMENT = ":android:show_fragment";

/**
 * When starting this activity, the invoking Intent can contain this extra
 * boolean that the header list should not be displayed.  This is most often
 * used in conjunction with {@link #EXTRA_SHOW_FRAGMENT} to launch
 * the activity to display a specific fragment that the user has navigated
 * to.
 */
public static final String EXTRA_NO_HEADERS = ":android:no_headers";

次に、PrefenceActivity を呼び出すインテントにこれら 2 つの追加項目を追加し、デフォルトで表示される PreferenceFragment を次のように指定します。

Intent intent = new Intent( this, Preferences.class );
intent.putExtra( PreferenceActivity.EXTRA_SHOW_FRAGMENT, PreferencesFragment.class.getName() );
intent.putExtra( PreferenceActivity.EXTRA_NO_HEADERS, true );

おすすめ記事