Java 手柄设置活动返回按下()的方式与顶栏返回按钮相同

Java 手柄设置活动返回按下()的方式与顶栏返回按钮相同,java,android,android-fragments,Java,Android,Android Fragments,我有一个SettingsActivity,它的顶部栏上有一个“向上”按钮。我的AettingsActivity也有标头,用于加载正确的设置片段。默认情况下,当我按下顶部栏的“向上”按钮时,它关闭可见片段并返回到标题,如果在标题视图上按下,则关闭活动。然而,我的手机“后退”按钮的工作原理不同——它只是关闭活动。我如何让“向上”箭头和后退按钮以相同的方式工作,以保持我的应用程序的一致性?我应该在我的活动中添加backpressed吗?如果是,我应该在那里添加什么 我的设置活动: public cla

我有一个SettingsActivity,它的顶部栏上有一个“向上”按钮。我的AettingsActivity也有标头,用于加载正确的设置片段。默认情况下,当我按下顶部栏的“向上”按钮时,它关闭可见片段并返回到标题,如果在标题视图上按下,则关闭活动。然而,我的手机“后退”按钮的工作原理不同——它只是关闭活动。我如何让“向上”箭头和后退按钮以相同的方式工作,以保持我的应用程序的一致性?我应该在我的活动中添加backpressed吗?如果是,我应该在那里添加什么

我的设置活动:

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


}
公共类设置活动扩展了AppCompativePreferenceActivity{
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setupActionBar();
}
私有void setupActionBar(){
ActionBar ActionBar=getSupportActionBar();
if(actionBar!=null){
actionBar.setDisplayHomeAsUpEnabled(true);
}
}
@凌驾
公共布尔值onMenuItemSelected(int-featureId,MenuItem项){
int id=item.getItemId();
if(id==android.R.id.home){
如果(!super.onMenuItemSelected(featureId,item)){
NavUtils.navigateUpFromSameTask(本);
}
返回true;
}
返回super.onMenuItemSelected(featureId,item);
}
@凌驾
public void onBuildHeaders(列表目标){
loadHeadersFromResource(R.xml.pref_头,目标);
}
受保护的布尔值isValidFragment(字符串碎片名称){
返回PreferenceFragment.class.getName().equals(fragmentName)
||NewsPreferenceFragment.class.getName().equals(fragmentName)
||OtherPreferenceFragment.class.getName().equals(fragmentName);
}
公共静态类NewsPreferenceFragment扩展了PreferenceFragment{
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.pref_新闻);
设置选项菜单(真);
}
@凌驾
公共布尔值onOptionsItemSelected(菜单项项){
int id=item.getItemId();
if(id==android.R.id.home){
startActivity(新意图(getActivity(),setingsActivity.class));
返回true;
}
返回super.onOptionsItemSelected(项目);
}
}
公共静态类OtherPreferenceFragment扩展了PreferenceFragment{
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.pref_other);
设置选项菜单(真);
}
@凌驾
公共布尔值onOptionsItemSelected(菜单项项){
int id=item.getItemId();
if(id==android.R.id.home){
startActivity(新意图(getActivity(),setingsActivity.class));
返回true;
}
返回super.onOptionsItemSelected(项目);
}
}
}

这是Android Studio在创建新设置活动时生成的默认代码,只是为了适应我的应用程序做了一些更改

您只需覆盖
onBackPressed()
方法:

@Override
public void onBackPressed() {
    NavUtils.navigateUpFromSameTask(this);
}

您能解释一下如何检查片段是否可以删除吗?对不起,我不知道NavUtils.navigateUpFromSameTask上写了什么以及您如何创建片段?请您更新问题以提供此类信息好吗?问题是,PreferenceActivity似乎没有任何片段事务,我无法确定当前片段的具体更改。抱歉,是我的错,我以为NavUtils是您的类:)我以前尝试过此函数,但它只完成PreferenceActivity,在不返回页眉视图的情况下:-(