2
我有一個SettingsActivity,其頂部欄上包含一個「向上」按鈕。我的AettingsActivity也有標題,加載適當的設置片段。默認情況下,當我按頂部欄「向上」按鈕時,它關閉可見片段並返回到標題,並在標題視圖上按下時關閉活動。不過,我的手機「後退」按鈕的作用不同 - 它只是關閉活動。我如何使「向上」箭頭和後退按鈕以同樣的方式工作以保持我的應用程序一致?我是否應該將onBackPressed添加到我的活動中,如果是,我應該在那裏放些什麼?處理SettingsActivity onBackpressed()與頂部酒吧後退按鈕的方式相同
我SettingsActivity:
public class SettingsActivity extends AppCompatPreferenceActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setupActionBar();
}
private void setupActionBar() {
ActionBar actionBar = getSupportActionBar();
if (actionBar != null) {
actionBar.setDisplayHomeAsUpEnabled(true);
}
}
@Override
public boolean onMenuItemSelected(int featureId, MenuItem item) {
int id = item.getItemId();
if (id == android.R.id.home) {
if (!super.onMenuItemSelected(featureId, item)) {
NavUtils.navigateUpFromSameTask(this);
}
return true;
}
return super.onMenuItemSelected(featureId, item);
}
@Override
public void onBuildHeaders(List<Header> target) {
loadHeadersFromResource(R.xml.pref_headers, target);
}
protected boolean isValidFragment(String fragmentName) {
return PreferenceFragment.class.getName().equals(fragmentName)
|| NewsPreferenceFragment.class.getName().equals(fragmentName)
|| OtherPreferenceFragment.class.getName().equals(fragmentName);
}
public static class NewsPreferenceFragment extends PreferenceFragment {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.pref_news);
setHasOptionsMenu(true);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
if (id == android.R.id.home) {
startActivity(new Intent(getActivity(), SettingsActivity.class));
return true;
}
return super.onOptionsItemSelected(item);
}
}
public static class OtherPreferenceFragment extends PreferenceFragment {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.pref_other);
setHasOptionsMenu(true);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
if (id == android.R.id.home) {
startActivity(new Intent(getActivity(), SettingsActivity.class));
return true;
}
return super.onOptionsItemSelected(item);
}
}
}
這是創建新SettingsActivity時,只需用一些變化以迎合我的應用程序
你能解釋一下如何檢查一個片段是否可以刪除? – TheTechGuy96
對不起,我不知道NavUtils.navigateUpFromSameTask上寫了什麼以及如何創建碎片?您能否更新問題以提供此類通知? –
問題是,PreferenceActivity似乎沒有任何片段事務,我無法弄清楚當前片段究竟發生了什麼變化。 – TheTechGuy96