从首选项切换回来后不会调用 onCreate
onCreate is not called after switching back from preferences
我的应用只有两个活动:main
和 preferences
在 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;
}
}
}
现在我有两个问题:
- 当用户按下
HomeButton
时,主屏幕似乎不会调用 onCreate
,因此更改后的首选项不会加载到主屏幕 activity 中。我需要更改什么才能告诉 android 调用 onCreate
函数?
- 由于android牛轧糖有这些"activity-change-animations",所以当切换到新的activity时,新屏幕种类
slides in
。但是当用户按下 HomeButton
时,预期的动画将是 slide out
,但它也是 slide in
。我该如何解决?
第一期说明:
onCreate
和onResume
有区别
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);
我的应用只有两个活动:main
和 preferences
在 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;
}
}
}
现在我有两个问题:
- 当用户按下
HomeButton
时,主屏幕似乎不会调用onCreate
,因此更改后的首选项不会加载到主屏幕 activity 中。我需要更改什么才能告诉 android 调用onCreate
函数? - 由于android牛轧糖有这些"activity-change-animations",所以当切换到新的activity时,新屏幕种类
slides in
。但是当用户按下HomeButton
时,预期的动画将是slide out
,但它也是slide in
。我该如何解决?
第一期说明:
onCreate
和onResume
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);