向上按钮从偏好片段到 return 到偏好 headers

up button from preference fragment to return to preference headers

我的应用有首选项 header,您可以在其中选择要启动的片段。在你进入某个片段后,我希望点击后退按钮再次显示 header,如果我在 header 显示给 return 我给其他人 activity 时再次按下.

我在 Activity 和 Fragment 中覆盖了 onOptionsItemSelected,但它总是从 activity 调用操作,因为我试图将 fragment 和 activity 绑定到相同的操作。这是我的代码:

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);
    }
}

我设法通过从 activity 中删除 onOptionsItemSelected 方法并保留内部片段来解决这个问题。现在,当我在片段内向上按时,它会转到 SettingsActivity,当在 activity 内向上按时,它的行为类似于 onBackPressed()。希望这对某人有所帮助。