Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/91.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 无法正确获取返回到上一个片段的片段_Android - Fatal编程技术网

Android 无法正确获取返回到上一个片段的片段

Android 无法正确获取返回到上一个片段的片段,android,Android,回答:我在片段a中有一个搜索视图,它在片段B后面仍然有焦点,所以第一次反压清除了那个焦点,让第二次反压完成我认为应该做的事情。谢谢你的帮助,很抱歉,我最初发布的信息不足以帮助我找到问题的解决方案 you can do something like this in your code //Click of the Item mListView.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Overr

回答:我在片段a中有一个搜索视图,它在片段B后面仍然有焦点,所以第一次反压清除了那个焦点,让第二次反压完成我认为应该做的事情。谢谢你的帮助,很抱歉,我最初发布的信息不足以帮助我找到问题的解决方案

you can do something like this in your code

//Click of the Item
mListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> adapter, View v, int position, long arg3) {
            final Obj item = (obj) adapter.getItemAtPosition(position);
            Bundle b = new Bundle();
            b.putParcelable("obj", item);
            Fragment fragment = new ObjFragment();
            fragment.setArguments(b);
            getFragmentManager().beginTransaction().add(android.R.id.content, fragment).addToBackStack("ObjFragment").commit();
        }
    });

//Backpress code
FragmentManager fragmentManager = getFragmentManager();
                    try {
                        fragmentManager.popBackStack();
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
问题 我遇到了一个问题,当我添加并提交一个新片段时,需要按两次后退按钮才能返回到上一个视图

注意:这只发生在您选择的第一个项目上,一旦您成功返回到包含listview的片段并再次选择对象或新对象,则只需按一次“上一步”按钮

mListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> adapter, View v, int position, long arg3) {
            final Obj item = (obj) adapter.getItemAtPosition(position);
            Bundle b = new Bundle();
            b.putParcelable("obj", item);
            Fragment fragment = new ObjFragment();
            fragment.setArguments(b);
            getFragmentManager().beginTransaction().add(android.R.id.content, fragment).addToBackStack(null).commit();
        }
    });
回答:我在片段a中有一个搜索视图,它在片段B后面仍然有焦点,所以第一次反压清除了那个焦点,让第二次反压完成我认为应该做的事情。感谢您的帮助,很抱歉,我最初发布的信息不足以帮助我找到问题的解决方案。

您可以在代码中执行类似操作
you can do something like this in your code

//Click of the Item
mListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> adapter, View v, int position, long arg3) {
            final Obj item = (obj) adapter.getItemAtPosition(position);
            Bundle b = new Bundle();
            b.putParcelable("obj", item);
            Fragment fragment = new ObjFragment();
            fragment.setArguments(b);
            getFragmentManager().beginTransaction().add(android.R.id.content, fragment).addToBackStack("ObjFragment").commit();
        }
    });

//Backpress code
FragmentManager fragmentManager = getFragmentManager();
                    try {
                        fragmentManager.popBackStack();
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
//单击项目的名称 mListView.setOnItemClickListener(新的AdapterView.OnItemClickListener(){ @凌驾 公共单击(适配器视图适配器,视图v,内部位置,长arg3){ 最终Obj项=(Obj)适配器.getItemAtPosition(位置); Bundle b=新Bundle(); b、 可随身携带(“obj”,项目); Fragment Fragment=新的ObjFragment(); fragment.setArguments(b); getFragmentManager(); } }); //反压码 FragmentManager FragmentManager=getFragmentManager(); 试一试{ fragmentManager.popBackStack(); }捕获(例外e){ e、 printStackTrace(); }
回答:我在片段a中有一个searchview,它在片段B后面仍然有焦点,所以第一次按下按钮清除了焦点,让第二次按下按钮完成我认为应该做的事情。感谢您的帮助,很抱歉,我最初发布的信息不足以帮助我找到问题的解决方案。

发布返回单击的代码。我已将您建议的内容添加到拥有该片段的活动中的onBackPressed()中。功能没有改变,第一个backpress调用没有触发异常。正确,上面的侦听器位于片段(片段a)内部,当选择一个对象时,将使用对象信息(片段B)生成一个新片段。在片段B中点击backpress之后,我想返回到片段A。这确实有效,我只是想弄清楚为什么它最初需要两个backpress。在活动中,你在哪里调用backpress代码?我在我的MainActivity中调用它,其中片段A是最初设置的。据我所知,我无法在片段中重写onBackPress(),因此我需要从活动中重写?还是我想错了?是的,你必须在你的活动中覆盖onBackPressed。我用sam的方法,这对我很有用。可能是您正在代码中执行其他操作。你可以调试它,检查它
you can do something like this in your code

//Click of the Item
mListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> adapter, View v, int position, long arg3) {
            final Obj item = (obj) adapter.getItemAtPosition(position);
            Bundle b = new Bundle();
            b.putParcelable("obj", item);
            Fragment fragment = new ObjFragment();
            fragment.setArguments(b);
            getFragmentManager().beginTransaction().add(android.R.id.content, fragment).addToBackStack("ObjFragment").commit();
        }
    });

//Backpress code
FragmentManager fragmentManager = getFragmentManager();
                    try {
                        fragmentManager.popBackStack();
                    } catch (Exception e) {
                        e.printStackTrace();
                    }