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 );