从首选项切换回来后不会调用 onCreate

onCreate is not called after switching back from preferences

我的应用只有两个活动:mainpreferences

PreferenceActivity 中(或者在我的例子中 SettingsActivity),用户可以更改一些东西,这会影响 MainActivity

这是我的 SettingsActivity:

public class SettingsActivity extends AppCompatActivity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
        getSupportActionBar().setHomeButtonEnabled(true);

        getFragmentManager().beginTransaction().replace(android.R.id.content, new SettingsFragment()).commit();
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
            case android.R.id.home:
                NavUtils.navigateUpFromSameTask(this);
                return true;
        }
        return super.onOptionsItemSelected(item);
    }

    public static class SettingsFragment extends PreferenceFragment implements Preference.OnPreferenceChangeListener {
        @Override
        public void onCreate(final Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            addPreferencesFromResource(R.xml.preferences);
        }

        @Override
        public boolean onPreferenceChange(Preference preference, Object value) {
            return false;
        }
    }
}

现在我有两个问题:

  1. 当用户按下 HomeButton 时,主屏幕似乎不会调用 onCreate,因此更改后的首选项不会加载到主屏幕 activity 中。我需要更改什么才能告诉 android 调用 onCreate 函数?
  2. 由于android牛轧糖有这些"activity-change-animations",所以当切换到新的activity时,新屏幕种类slides in。但是当用户按下 HomeButton 时,预期的动画将是 slide out,但它也是 slide in。我该如何解决?

第一期说明:

onCreateonResume

有区别

onCreate: Activity 首次发布。在这里你可以初始化你的东西。
onResume: 用户returns到activity后又activity进入后台。 (在另一个 activity 上调用 onPause)

对于第二期,试试这个:

Intent intent = NavUtils.getParentActivityIntent(this);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
NavUtils.navigateUpTo(this, intent);

而不是

NavUtils.navigateUpFromSameTask(this);