我的应用只有两项活动: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
,因此更改的首选项不会加载到主活动中。我需要更改什么,告诉android调用onCreate
函数?slides in
。但是,当用户按下HomeButton
时,预期的动画将是slide out
,但它也是slide in
。我该如何解决这个问题? 答案 0 :(得分:2)
第一期的解释:
onCreate
和onResume
onCreate
:首次推出活动。您可以在这里初始化您的资料
onResume
:用户在另一个活动进入后台后返回活动。 (在其他活动上调用onPause)
对于第二个问题,请尝试:
Intent intent = NavUtils.getParentActivityIntent(this);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
NavUtils.navigateUpTo(this, intent);
而不是
NavUtils.navigateUpFromSameTask(this);