有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java在片段上实现向上导航

我有一个包含片段a的主要活动。当我单击FragmentA时,会发生以下情况:

getFragmentManager().beginTransaction().replace(R.id.container,new PrefFragment()).addToBackStack("back").commit();

我的舱单上有:

<activity>
<meta-data
                安卓:name="安卓.support.PARENT_ACTIVITY"
                安卓:value="com.example.myfirstapp.MainActivity" />
</activity>

在主要活动中:

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_head_sound);
    if (savedInstanceState == null) {
        getFragmentManager().beginTransaction()
                .add(R.id.container, new FragmentA)
                .commit();
    }
    getActionBar().setDisplayHomeAsUpEnabled(true);

}

但“向上”按钮导航始终可见

FragmentB包含以下代码:

 @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        int id=item.getItemId();
        switch (id)
        {
            case 安卓.R.id.home:
                getFragmentManager().popBackStack();
                Toast.makeText(getActivity(),"CLick",Toast.LENGTH_SHORT).show();

                break;
        }
        return super.onOptionsItemSelected(item);



    }

此代码不运行。 我只需要在FragmentB中实现向上导航。我该怎么做


共 (1) 个答案

  1. # 1 楼答案

    据我所知,上行导航必须仅在FragmentB中工作,而如果显示FragmentA,上行导航将被隐藏。如果是这样,那么在活动中,从onCreate中删除getActionBar().setDisplayHomeAsUpEnabled(true);

    此外,在处理菜单单击时必须返回true,并将OnOptions ItemSelected(MenuItem)移动到自android以来的活动。R.id.主菜单单击仅传递到活动

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
            case android.R.id.home:
                getFragmentManager().popBackStack();
                Toast.makeText(getActivity(),"CLick",Toast.LENGTH_SHORT).show();
                return true; //Notice you must returning true here
    
            default:
                return super.onOptionsItemSelected(item);
        }
    }
    

    支离破碎

    @Override
    public void onAttach(Activity a) {
        super.onAttach(a);
        a.getActionBar().setDisplayHomeAsUpEnabled(false);
    }
    

    支离破碎

    @Override
    public void onAttach(Activity a) {
        super.onAttach(a);
        a.getActionBar().setDisplayHomeAsUpEnabled(true);
    }