我试着做一个后退按钮来处理碎片。我用的是onBackPressed。但是每一次编译并点击上一次按钮,屏幕总是会转到主屏幕上,而不是转到前面的片段,我的代码有什么问题吗?谢谢你之前
这是我的代码
公共类FragmentScheduleRoom扩展片段{ ListView列表;//数组字符串存储国家名String[] room =新的String[] { "304“、"305”、"306“、"307”、"308“、};@覆盖公共视图( inflater.inflate(R.layout.fragment_layout_schedule_room,oncreateView,ViewGroup容器,Bundle savedInstanceState) { Log.d("ZZZ","ada di oncreateView Schedule“);super.onCreate(savedInstanceState);View rootView =oncreateView容器, List> aList =新的ArrayList>(); 对于(int i=0;i<5;i++) { HashMap hm =新的HashMap();hm.put(“房间”,roomi);aList.add(hm);// R.layout.listview_layout定义了每个项目列表= (ListView) rootView.findViewById(R.id.list)的布局;ListAdapter适配器=新SimpleAdapter(getActivity()、aList、R.layout.list_schedule_room、new String[]{"room"}、new String[]{“room”}) Int[]{R.id.room}; view.findViewById(R.id.room)).getText().toString();(list.setAdapter(适配器));list.setOnItemClickListener(新AdapterView.OnItemClickListener() {@AdapterView.OnItemClickListener @Override void onItemClick)(AdapterView<?>父视图、视图、int位置、长id) { String = ((TextView) onItemClick)//意图in =新意图(getActivity(),FragmentScheduleDetail.class);// in.putExtra("txt",day);字符串selectday = getArguments().getString("selectday");片段=新FragmentScheduleDetail();Bundle data = new ();data.putString("selectroom",房间);data.putString("selectday",selectday);fragment.setArguments(数据);FragmentManager frgManager = getFragmentManager();Log.d(“标签”,“房间选择:”+ data.getString("selectroom"));frgManager.beginTransaction().replace(R.id.content_frame,片段) .commit();//Toast.makeText(getActivity(),“您单击”+ aList.get(+position).get("day"),Toast.LENGTH_SHORT).show();});}返回rootView;} public void onBackPressed() {//Super.onBackPress();//Toast.makeText(getApplicationContext(),"click",2000).show();F片=新FragmentScheduleDay();FragmentManager frgManager = getFragmentManager();.commit();}}
发布于 2014-10-25 01:51:14
查看getFragmentManager().popBackStack()方法
发布于 2014-10-25 01:51:38
不需要这么做,兄弟,就这么做
public void onBackPressed() {
super.onBackPressed();
}然后,在前面的片段中,将您带到FragmentScheduleRoom的FragmentScheduleDay在调用下一个片段(即FragmentScheduleRoom) transaction.addToBackStack(null);时执行此操作
编辑1:大部分片段替换函数detaches()并附加()片段。所以用你的风格..。使用detach(旧片段);然后附加(新片段);然后提交()它将不会work..this正确的代码格式。
试着让我知道它是否解决了你的问题
发布于 2014-10-25 02:57:02
你可以试试这个:
public boolean onKeyDown(int keyCode, KeyEvent event) {
if ((keyCode == KeyEvent.KEYCODE_BACK)) {
// do your task here
}
return super.onKeyDown(keyCode, event);
}希望这对你有用。这是我的工作。
https://stackoverflow.com/questions/26558530
复制相似问题