我的应用有首选项标题,您可以在其中选择要启动的片段。在您处于某个片段之后,我希望再次点击后退按钮显示标题,如果我再次按回显示标题以返回其他活动。
我在Activity和Fragment中覆盖了onOptionsItemSelected
,但它始终从活动中调用操作,因为我试图将片段和活动绑定到同一个操作。这是我的代码:
public class SettingsActivity extends AppCompatPreferenceActivity {
@Override
public void onBuildHeaders(List<Header> target) {
loadHeadersFromResource(R.xml.preference_headers, target);
}
@Override
protected boolean isValidFragment(String fragmentName) {
return SettingsFragment.class.getName().equals(fragmentName);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setupActionBar();
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
if (id == android.R.id.home) {
finish();
return true;
}
return super.onOptionsItemSelected(item);
}
private void setupActionBar() {
ActionBar actionBar = getSupportActionBar();
if (actionBar != null) {
actionBar.setDisplayHomeAsUpEnabled(true);
}
}
public static class SettingsFragment extends PreferenceFragment {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setHasOptionsMenu(true);
}
@Override
public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
addPreferencesFromResource(R.xml.app_preferences);
}
@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);
}
}
答案 0 :(得分:0)
我设法通过从活动中删除onOptionsItemSelected
方法并留下内部片段来解决此问题。现在,当我按下内部片段时,它会转到SettingsActivity
,当按下内部活动时,它就像onBackPressed()
一样。希望这有助于某人。