启动PreferenceActivity时销毁的主要活动

时间:2013-03-01 14:56:47

标签: android android-activity preference

我有一个非常烦人的管理活动问题。

我有两项活动:

1-主要活动

2-主要活动发起的偏好活动。

在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>

我真的很感激任何帮助。

1 个答案:

答案 0 :(得分:1)

我解决了这个问题,这是因为我用Main()覆盖了MainActivity中的onPause(),因此当我打开另一个活动时,我的主要活动被销毁了......