从第二个活动返回到主活动的片段后,操作栏功能丢失

时间:2015-10-07 13:59:52

标签: android android-fragments android-activity

应用程序工作流方案

  1. 主要活动将第一个片段添加到其FrameLayout容器中。设置了操作栏,包括实施onCreateOptionsMenu()
  2. 从第一个片段开始,使用Intent启动新活动。新活动使用RecyclerView小部件设置自己的布局文件。 未设置操作栏(仅使用清单文件向父活动提供后退导航,即Main Activity
  3. 当用户点击CardView小部件容器中的RecyclerView项时,Main Activity的第二个片段会替换当前 使用RecyclerView小部件的活动。
  4. 在片段替换期间,主活动的布局文件再次设置,因为其FrameLayout容器由片段使用 将会效仿。
  5. 加载第二个片段时,主要活动(以及以下片段)操作栏的功能将丢失。可以看到上一个活动的后退导航(带标题)。
  6. 在从其他活动回来时,我需要帮助确定如何确保主要活动的操作栏功能(包括在onCreateOptionsMenu()的{​​{1}}内调用的辅助方法)?

    提前感谢您提供任何有价值的帮助。

    编辑:

    MainActivity布局文件:

    MainActivity

    主要活动将第一个片段添加到其<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" > <FrameLayout android:id="@+id/container" android:layout_width="match_parent" android:layout_height="match_parent" > </FrameLayout> </RelativeLayout> 容器中:

    FrameLayout
    MainActivity的

    BaseFragment firstFragment = new BaseFragment(); // Add the fragment to the 'fragment_container' FrameLayout getSupportFragmentManager().beginTransaction() .add(R.id.container, firstFragment) .addToBackStack(null) .commit();

    onCreateOptionsMenu()

    使用public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present getMenuInflater().inflate(R.menu.menu_main, menu); // Add the shopping cart menu item onto action bar. MenuItem cartItem = menu.findItem(R.id.ab_cartView); // Add the search view menu item onto action bar and hide it until ProductListFragment MenuItem search = menu.findItem(R.id.search); search.setVisible(false); // Check whether the DB table has entries - if true, then display the shopping cart icon. if (db.getActiveItemsCount() > 0) cartItem.setVisible(true); else cartItem.setVisible(false); MenuItemCompat.setActionView(cartItem, R.layout.action_bar_notification_icon); ab_cartView = MenuItemCompat.getActionView(cartItem); ab_cartView_notification = (TextView) ab_cartView.findViewById(R.id.ab_cartView_items_notification); // Update list items count label of ab_cartView_notification updateListItemsCount(); }

    中的Intent开始新活动
    firstFragment

    新活动(Intent displayListSelectionIntent = new Intent(getActivity().getApplicationContext(), ListSelectionActivity.class); // Add data about current status to the intent displayListSelectionIntent.putExtra("ListStatus_Active", true); startActivity(displayListSelectionIntent); )布局文件:

    ListSelectionActivity

    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:background="#e2e6fb" > <android.support.v7.widget.RecyclerView android:id="@+id/cardList" android:layout_width="match_parent" android:layout_height="match_parent" /> </RelativeLayout> 的侦听器接口以及用主要活动的第二个片段替换ListSelectionAdapter的方法:

    ListSelectionActivity

    // Instantiate click listener interface for the ListSelectionAdapter ListSelectionAdapter.OnItemClickListener onItemClickListener = new ListSelectionAdapter.OnItemClickListener() { @Override public void onItemClick(View view, int position) { replaceFragment (new CategoryFragment()); } };

    replaceFragment()

0 个答案:

没有答案