0

アクティビティの管理に非常に厄介な問題があります。

私は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>

どんな助けでも本当に感謝します。

4

1 に答える 1

1

この問題を解決しました。これは、MainActivity の onPause() を finish() でオーバーライドしたために発生します。このため、別のアクティビティを開くとメイン アクティビティが破棄されます...

于 2013-03-12T09:12:13.610 に答える