私は非常に簡単だと思うことを達成しようとしていますが、PreferenceActivityクラスとxml preference-headerタグを使用してそれを達成する方法に困惑しています。
ユーザーがアプリ設定アイコンをタップすると、チェックボックスとリストの小さなリストが表示されます。優先フラグメントは1つしかありません。ここまでで、PreferenceActivity xmlファイル(preferences.xml、および設定フラグメントxml)を設定して、設定フラグメントの単一のヘッダーを表示できます。ユーザーがそのヘッダーを選択すると、設定画面は希望どおりになりますが、最初のヘッダー画面の表示をスキップする方法がわかりません。
設定/設定アイコンをタップし、実際の設定/設定を取得するためにタップされる単一のヘッダーを表示する必要があるのは無駄のようです。
あなたの好みを分類したい場合、これがどのように非常に役立つか理解していますが、簡単なことのために、これはオーバーヘッドを追加し、かなり不格好に見えます。
明確になったことを願っています。簡単に言えば、私の質問です:
PreferenceActivityクラスとpreference-headerタグを使用して、ヘッダーのないオプションの単一画面を単に表示する新しい好ましい方法は何ですか?
さらに調べてみると、古い方法がやったことを簡単にやろうとしているようです。非推奨の関数を使用せずにこれを実行しようとしています。
よろしくお願いします、B。
新しい推奨方法は、単一のPreferenceFragment
をアクティビティのメインコンテンツとして表示することです。 PreferenceActivity
である必要はありません。 APIsデモサンプルをご覧ください
public class FragmentPreferences extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Display the fragment as the main content.
getFragmentManager().beginTransaction().replace(Android.R.id.content,
new PrefsFragment()).commit();
}
public static class PrefsFragment extends PreferenceFragment {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Load the preferences from an XML resource
addPreferencesFromResource(R.xml.preferences);
}
}
}
この質問に合った答えを探していました。最終的に、私はいくつかの他のソースからそれを解決しました。まだ答えが欲しい人のために、ここで私のために働いたものがあります。 (注-このプロジェクトでは、最小SDKとターゲットSDKの両方が15に設定されています。)
単一の設定画面を表示する設定クラス。
public class SettingsActivity extends PreferenceActivity {
private final static String TAG = "SettingsAcitivity";
public SettingsActivity() {}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
MyLog.d(TAG, "onCreate");
getFragmentManager().beginTransaction()
.replace(Android.R.id.content, new LocationFragment()).commit();
}
public class LocationFragment extends PreferenceFragment {
private final static String TAG = "LocationFragment";
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
MyLog.d(TAG, "onCreate");
addPreferencesFromResource(R.xml.locationsettings);
}
}
}
設定を表示するコード:
@Override
public boolean onOptionsItemSelected(MenuItem item) {
MyLog.d(TAG, "onOptionsItemSelected");
switch (item.getItemId()) {
case R.id.menu_main_help:
break;
case R.id.menu_main_about:
break;
case R.id.menu_main_settings:
MyLog.d(TAG, "Settings");
Intent settingsIntent = new Intent(this, SettingsActivity.class);
startActivity(settingsIntent);
break;
}
return true;
}
Backキーは、SettingsActivityを終了します。組み込みの設定ルーチンは、変更を保存します。私が持っているonResume関数は、呼び出しアクティビティ(この場合はMainActivity)によって使用される変更された設定を更新するgetSettings()を実行します。
それでおしまい。