【问题标题】:onBackPressed not workingonBackPressed 不工作
【发布时间】:2014-10-25 01:34:52
【问题描述】:

我试图在片段上制作一个后退按钮。 我使用 onBackPressed .. 但每次编译并单击后退按钮, 屏幕总是转到主屏幕,而不是转到上一个片段 我的代码有什么问题? 谢谢之前

这是我的代码

public class FragmentScheduleRoom extends Fragment{
    ListView list;
    // Array of strings storing country names
    String[] room = new String[] {
            "304",
            "305",
            "306",
            "307",
            "308",
    };

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        Log.d("ZZZ", "ada di oncreateView Schedule room");
        super.onCreate(savedInstanceState);
        View rootView = inflater.inflate(R.layout.fragment_layout_schedule_room, container,

假); final List> aList = new ArrayList>();

        for(int i=0;i<5;i++) {
            HashMap<String, String> hm = new HashMap<String, String>();
            hm.put("room", room[i]);
            aList.add(hm);
            // R.layout.listview_layout defines the layout of each item
            list = (ListView) rootView.findViewById(R.id.list);
            ListAdapter adapter = new SimpleAdapter(getActivity(), aList, R.layout.list_schedule_room, new String[]{"room"}, new

int[]{R.id.room});

            list.setAdapter(adapter);
            list.setOnItemClickListener(new AdapterView.OnItemClickListener() {
                @Override
                public void onItemClick(AdapterView<?> parent, View view,
                                        int position, long id) {
                    String room = ((TextView) view.findViewById(R.id.room)).getText().toString();
//                    Intent in = new Intent(getActivity(),FragmentScheduleDetail.class);
//                    in.putExtra("txt",day);
                    String selectday = getArguments().getString("selectday");
                    Fragment fragment = new FragmentScheduleDetail();
                    Bundle data = new Bundle();
                    data.putString("selectroom", room);
                    data.putString("selectday", selectday);
                    fragment.setArguments(data);
                    FragmentManager frgManager = getFragmentManager();
                    Log.d("tag", "ROOM SELECT: " + data.getString("selectroom"));
                    frgManager.beginTransaction().replace(R.id.content_frame, fragment)
                            .commit();
                    //Toast.makeText(getActivity(), "You Clicked at " + aList.get(+position).get("day"), Toast.LENGTH_SHORT).show();
                }
            });
        }
        return rootView;
    }
    public void onBackPressed() {
        //super.onBackPressed();
        //Toast.makeText(getApplicationContext(), "click",2000).show();
        Fragment fragment = new FragmentScheduleDay();
        FragmentManager frgManager = getFragmentManager();
        frgManager.beginTransaction().replace(R.id.content_frame, fragment)
                .commit();
    }

}

【问题讨论】:

    标签: java android android-fragments back-button


    【解决方案1】:

    看看 getFragmentManager().popBackStack() 方法

    【讨论】:

      【解决方案2】:

      兄弟,没必要这样做,就这样做

       public void onBackPressed() {
          super.onBackPressed();
      }
      

      然后在您的上一个片段FragmentScheduleDay 中将您带到FragmentScheduleRoom 在调用下一个片段(即FragmentScheduleRoomtransaction.addToBackStack(null); 时执行此操作@

      编辑 1:主要是片段替换函数 detaches() 和 attaches() 片段.. 所以要使用你的风格.. 使用 detach(old fragment);然后附加(新片段);然后 commit() 它将起作用..这不是正确的代码格式..

      试试看能否解决你的问题

      【讨论】:

      • 为什么我不能使用 super.onBackPressed();?我使用 android 4.4 是 onBackPressed 在 android 4.4 中不起作用吗?我读了这个programmerguru.com/android-tutorial/…
      • 该文档教您如何重新定义 backpressed() 的行为.. super.onBackPressed().. 换句话说,使其能够在工作时工作.. 如果您想弹出确认用户操作的对话框,然后您就可以使用该帖子..检查我的编辑以获取一些提示@DerrySusilo
      【解决方案3】:

      你可以试试这个:

      public boolean onKeyDown(int keyCode, KeyEvent event) {
          if ((keyCode == KeyEvent.KEYCODE_BACK)) {
              // do your task here
          }
          return super.onKeyDown(keyCode, event);
      }
      

      希望这对你有用。这对我有用。

      【讨论】:

      • 如果我们按下后退按钮,是否会自动调用 onKeyDown?我们需要什么听众?
      猜你喜欢
      • 2020-06-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多