从偏好片段到返回首选项标头的按钮



我的应用程序具有首选项标头,您可以在其中选择要启动的片段。在某个片段之后,我希望单击"后退"按钮再次显示标头,如果我再次向后压,当显示标题将我返回其他活动时。

i在活动和片段中覆盖了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);
    }
}

我通过从活动中删除onOptionsItemSelected方法并留在片段中来解决此问题。现在,当我按下片段时,它将变为SettingsActivity,当将UP按在内部活动中时,它的作用类似于onBackPressed()。希望这对某人有帮助。

相关内容

  • 没有找到相关文章

最新更新