我正在制作一个聊天应用程序我有这么多片段,但我只使用一个活动。在我的应用程序导航抽屉也在那里,所以我的问题是我从第一个片段到第二个片段,在第二个片段我正在使用动作栏homeupenabled显示后退按钮,但是当我按下那个按钮时我没有从onoptionsmenuselected.I正在删除抽屉切换当我通过drawerindicator false输入第二个片段。我试过各方面,请帮帮我
代码:
public class SecondFragment extends Fragment
{
private BaseActivity _activity;
@Override
public void onAttach(Activity activity)
{
super.onAttach(activity);
_activity= (BaseActivity) activity;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setHasOptionsMenu(true);
}
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState)
{
View view = inflater.inflate(R.layout.base, null);
_activity._mActionBarDrawerToggle.setDrawerIndicatorEnabled(false);
_activity.getSupportActionBar().setDisplayHomeAsUpEnabled(true);
return view;
}
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
super.onCreateOptionsMenu(menu, inflater);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
// app icon in action bar clicked; goto parent activity.
getActivity().getSupportFragmentManager().popBackStack();
Toast.makeText(getActivity(),"working",Toast.LENGTH_SHORT).show();
return true;
default:
return super.onOptionsItemSelected(item);
}
}
答案 0 :(得分:0)
您可以使用
getActivity().onBackPressed()
答案 1 :(得分:0)
你只能在同一活动的时候做事
1)Open drawer event or
2)Back Button
因为其他是片段
如果你想在背压事件上做一些事情,那么你可以使用重写方法
public void onBackPressed()
您的活动
答案 2 :(得分:0)
在创建第一个片段时,是否已将第二个片段放在第一个片段中的背板上?我遇到了你所描述的确切问题。阅读你的代码我意识到我在第二个片段中没有覆盖onOptionsItemSelected
,但已在第二个片段中调用了setHasOptionsMenu(true)
和setDisplayHomeAsUpEnabled(true)
。所以,一旦我加入onOptionsItemSelected
。我能够回到第一个片段。我甚至只是将你的家庭案例代码粘贴到我的第二个片段中,并得到了"工作"第一次吐司。
我唯一的另一个区别是我没有@Override public View onCreateView
。但这是出于不同的原因。所以我的setHasOptionsMenu(true)
和setDisplayHomeAsUpEnabled(true)
在onActivityCreated
中被调用,我的第一个片段是活动在创建时在其容器中膨胀的主要片段。
首先调用第二个片段就像在onlistItemClick
Bundle args = new Bundle();
args.putSerializable("SELECTED_TAG", dataList);
SecondFragment toFragment = new SecondFragment();
toFragment.setArguments(args);
//show more about the exercise
//TODO:start an indent to launch new activity
FragmentManager fm = getFragmentManager();
FragmentTransaction transaction = fm.beginTransaction();
transaction.setCustomAnimations(R.anim.slidein, R.anim.slideout);
transaction.addToBackStack(null).replace(R.id.container, toFragment, SECOND_FRAGMENT_TAG)
.commit();
然后第二个片段返回'在onOptionItemSelected中与你的完全一样