アクティビティの管理に非常に厄介な問題があります。
私は2つの活動をしています:
1- 主な活動
2- メイン アクティビティによって起動される Preference アクティビティ。
PreferenceActivity で、「前の」ボタンをタップすると、メイン アクティビティに戻る代わりにアプリケーションが終了します。コードをデバッグしたところ、優先アクティビティの onCreate() メソッドが呼び出された直後に、メイン アクティビティが常に破棄されることに気付きました。
設定アクティビティを呼び出す方法があります:
// Launch Settings activity
Intent intent = new Intent(this, SettingsActivity.class);
startActivity(intent);
また、私の好みの活動クラス:
public class SettingsActivity extends PreferenceActivity {
private static ListView listView;
@SuppressLint("NewApi")
@Override
protected void onCreate(final Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getFragmentManager().beginTransaction()
.replace(android.R.id.content, new MyPreferenceFragment())
.commit();
// Setting the list's background to be white
listView = (ListView) findViewById(android.R.id.list);
}
@SuppressLint("NewApi")
public static class MyPreferenceFragment extends PreferenceFragment
implements OnPreferenceClickListener,
ColorPickerDialog.OnColorChangedListener {
/**
* Background color preference.
*/
private Preference prefBgColor;
/**
* Text color preference.
*/
private Preference prefTextColor;
@Override
public void onCreate(final Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.settings);
final Preference prefBgColor = findPreference("bg_color");
prefBgColor
.setOnPreferenceClickListener(new OnPreferenceClickListener() {
public boolean onPreferenceClick(Preference arg0) {
// Create color picker dialog
new ColorPickerDialog(getActivity(),
MyPreferenceFragment.this, prefBgColor
.getKey(), prefBgColor
.getSharedPreferences().getInt(
prefBgColor.getKey(), 0),
prefBgColor.getSharedPreferences().getInt(
prefBgColor.getKey(), 0)).show();
return true;
}
});
final Preference prefTextColor = findPreference("text_color");
prefTextColor
.setOnPreferenceClickListener(new OnPreferenceClickListener() {
public boolean onPreferenceClick(Preference arg0) {
// Create color picker dialog
new ColorPickerDialog(getActivity(),
MyPreferenceFragment.this, prefTextColor
.getKey(), prefTextColor
.getSharedPreferences().getInt(
prefTextColor.getKey(), 0),
prefTextColor.getSharedPreferences()
.getInt(prefTextColor.getKey(), 0))
.show();
return true;
}
});
}
@SuppressLint("NewApi")
@Override
public boolean onPreferenceClick(Preference pref) {
return true;
}
@SuppressLint("NewApi")
@Override
public void colorChanged(String key, int color) {
// Get choosed color and save it
this.findPreference(key).getEditor().putInt(key, color).commit();
}
}
}
編集:私のマニフェストファイルにアクティビティ宣言があります:
<activity
android:name="com.meher.tools.menulauncher.MainActivity"
android:label="@string/app_name"
android:configChanges="orientation|screenSize"
android:theme="@style/AppTheme"
android:launchMode="standard" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<!-- Settings activity -->
<activity
android:name="com.meher.tools.menulauncher.SettingsActivity"
android:configChanges="orientation|screenSize"
android:theme="@style/AppTheme"
android:launchMode="standard" >
</activity>
どんな助けでも本当に感謝します。