Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/205.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
Java 双击后按可退出应用程序_Java_Android_Android Fragments - Fatal编程技术网

Java 双击后按可退出应用程序

Java 双击后按可退出应用程序,java,android,android-fragments,Java,Android,Android Fragments,我有登录活动和三个片段,即加载程序、主页、,参加。现在,当我在主页中时,我希望我的应用程序通过点击backpressed退出。我已经成功实现了我的目标,但双重backpressed也应用于我不想要的参加片段中。在take Attention片段中,单击backpressed应该只转到上一个片段,但它不会发生 这是我的密码:- MainActivity.java @Override public void onBackPressed() { //for(int i=0;i

我有登录活动和三个片段,即加载程序、主页、,参加。现在,当我在主页中时,我希望我的应用程序通过点击backpressed退出。我已经成功实现了我的目标,但双重backpressed也应用于我不想要的参加片段中。在take Attention片段中,单击backpressed应该只转到上一个片段,但它不会发生

这是我的密码:-

MainActivity.java

@Override
    public void onBackPressed() {

        //for(int i=0;i<getFragmentManager().getBackStackEntryCount();i++)
        Home_Screen home_screen = (Home_Screen) getFragmentManager().findFragmentByTag
                ("Home_Screen_Teacher");

        if (home_screen != null && home_screen.isVisible()) {

             DrawerLayout navigation_drawer = home_screen.getView().findViewById(R.id.drawer_layout);
            if (navigation_drawer.isDrawerOpen(GravityCompat.START)) {
                navigation_drawer.closeDrawer(Gravity.LEFT);
            }


            else {
                if (backpressedTime + 2000 > System.currentTimeMillis()) {

                    this.finish();
                    System.exit(0);
                    return;
                }
                else {
                    second=(int)(backpressedTime/1000);
                    Snackbar.make(findViewById(R.id.home_screen_teacher),"Detach",Snackbar.LENGTH_LONG).show();
                }
                backpressedTime = System.currentTimeMillis();
                    //super.onBackPressed();
                }

            }
            else{

                super.onBackPressed();
            }


        }
@Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        View loadder_fragment=inflater.inflate(R.layout.fragment_loader_fragment, container, false);

        Loader=(AVLoadingIndicatorView)loadder_fragment.findViewById(R.id.loder_login);
        handler=new Handler();
        runnable=new Runnable() {
            @Override
            public void run() {
                Loader.setVisibility(View.INVISIBLE);
                timer.cancel();

                fragmentManager=getFragmentManager();
                fragmentTransaction=fragmentManager.beginTransaction();
                fragmentTransaction.setCustomAnimations(R.animator.slide_in_left,R.animator
                        .slide_out_left,R.animator.slide_in_right,R.animator.slide_out_right);
                Home_Screen home_screen=new Home_Screen();
                fragmentTransaction.replace(R.id.Home_screen_fragment_3,home_screen,
                        "Home_Screen_Teacher");
                fragmentTransaction.addToBackStack(null);
                fragmentTransaction.commit();

            }


        };

        timer=new Timer();
        timer.schedule(new TimerTask() {
            @Override
            public void run() {
                handler.post(runnable);
            }
        }, 5000,5000);



        return loadder_fragment;
    }
 navigation_drawer=(DrawerLayout)Home_screen.findViewById(R.id.drawer_layout);
        navigationView=(NavigationView)Home_screen.findViewById(R.id.Navigation_view_for_teacher);
        home_screen_take_attendance_button=(Button)Home_screen.findViewById(R.id
                .home_screen_take_attendance_button);
        home_screen_take_attendance_button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {

                getActivity().getFragmentManager().beginTransaction().replace(R.id
                        .fragment_take_attendance,new Take_attendance(),"take_attendence")
                        .addToBackStack(null).commit();

            }
        });
 toolbar.setNavigationOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                fragmentManager=getFragmentManager();
                fragmentTransaction=fragmentManager.beginTransaction();

                fragmentTransaction.setCustomAnimations(R.animator.slide_in_left,R.animator          .slide_out_left,R.animator.slide_in_right,R.animator.slide_out_right);
                Home_Screen home_screen=new Home_Screen();      fragmentTransaction.replace(R.id.Home_screen_fragment1,home_screen,"Home_Screen_Teacher");
                fragmentTransaction.addToBackStack(null);
                fragmentTransaction.commit();
            }
        });
           //Some code
主屏幕fragment.java

@Override
    public void onBackPressed() {

        //for(int i=0;i<getFragmentManager().getBackStackEntryCount();i++)
        Home_Screen home_screen = (Home_Screen) getFragmentManager().findFragmentByTag
                ("Home_Screen_Teacher");

        if (home_screen != null && home_screen.isVisible()) {

             DrawerLayout navigation_drawer = home_screen.getView().findViewById(R.id.drawer_layout);
            if (navigation_drawer.isDrawerOpen(GravityCompat.START)) {
                navigation_drawer.closeDrawer(Gravity.LEFT);
            }


            else {
                if (backpressedTime + 2000 > System.currentTimeMillis()) {

                    this.finish();
                    System.exit(0);
                    return;
                }
                else {
                    second=(int)(backpressedTime/1000);
                    Snackbar.make(findViewById(R.id.home_screen_teacher),"Detach",Snackbar.LENGTH_LONG).show();
                }
                backpressedTime = System.currentTimeMillis();
                    //super.onBackPressed();
                }

            }
            else{

                super.onBackPressed();
            }


        }
@Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        View loadder_fragment=inflater.inflate(R.layout.fragment_loader_fragment, container, false);

        Loader=(AVLoadingIndicatorView)loadder_fragment.findViewById(R.id.loder_login);
        handler=new Handler();
        runnable=new Runnable() {
            @Override
            public void run() {
                Loader.setVisibility(View.INVISIBLE);
                timer.cancel();

                fragmentManager=getFragmentManager();
                fragmentTransaction=fragmentManager.beginTransaction();
                fragmentTransaction.setCustomAnimations(R.animator.slide_in_left,R.animator
                        .slide_out_left,R.animator.slide_in_right,R.animator.slide_out_right);
                Home_Screen home_screen=new Home_Screen();
                fragmentTransaction.replace(R.id.Home_screen_fragment_3,home_screen,
                        "Home_Screen_Teacher");
                fragmentTransaction.addToBackStack(null);
                fragmentTransaction.commit();

            }


        };

        timer=new Timer();
        timer.schedule(new TimerTask() {
            @Override
            public void run() {
                handler.post(runnable);
            }
        }, 5000,5000);



        return loadder_fragment;
    }
 navigation_drawer=(DrawerLayout)Home_screen.findViewById(R.id.drawer_layout);
        navigationView=(NavigationView)Home_screen.findViewById(R.id.Navigation_view_for_teacher);
        home_screen_take_attendance_button=(Button)Home_screen.findViewById(R.id
                .home_screen_take_attendance_button);
        home_screen_take_attendance_button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {

                getActivity().getFragmentManager().beginTransaction().replace(R.id
                        .fragment_take_attendance,new Take_attendance(),"take_attendence")
                        .addToBackStack(null).commit();

            }
        });
 toolbar.setNavigationOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                fragmentManager=getFragmentManager();
                fragmentTransaction=fragmentManager.beginTransaction();

                fragmentTransaction.setCustomAnimations(R.animator.slide_in_left,R.animator          .slide_out_left,R.animator.slide_in_right,R.animator.slide_out_right);
                Home_Screen home_screen=new Home_Screen();      fragmentTransaction.replace(R.id.Home_screen_fragment1,home_screen,"Home_Screen_Teacher");
                fragmentTransaction.addToBackStack(null);
                fragmentTransaction.commit();
            }
        });
           //Some code
Take\u attention fragment.java

@Override
    public void onBackPressed() {

        //for(int i=0;i<getFragmentManager().getBackStackEntryCount();i++)
        Home_Screen home_screen = (Home_Screen) getFragmentManager().findFragmentByTag
                ("Home_Screen_Teacher");

        if (home_screen != null && home_screen.isVisible()) {

             DrawerLayout navigation_drawer = home_screen.getView().findViewById(R.id.drawer_layout);
            if (navigation_drawer.isDrawerOpen(GravityCompat.START)) {
                navigation_drawer.closeDrawer(Gravity.LEFT);
            }


            else {
                if (backpressedTime + 2000 > System.currentTimeMillis()) {

                    this.finish();
                    System.exit(0);
                    return;
                }
                else {
                    second=(int)(backpressedTime/1000);
                    Snackbar.make(findViewById(R.id.home_screen_teacher),"Detach",Snackbar.LENGTH_LONG).show();
                }
                backpressedTime = System.currentTimeMillis();
                    //super.onBackPressed();
                }

            }
            else{

                super.onBackPressed();
            }


        }
@Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        View loadder_fragment=inflater.inflate(R.layout.fragment_loader_fragment, container, false);

        Loader=(AVLoadingIndicatorView)loadder_fragment.findViewById(R.id.loder_login);
        handler=new Handler();
        runnable=new Runnable() {
            @Override
            public void run() {
                Loader.setVisibility(View.INVISIBLE);
                timer.cancel();

                fragmentManager=getFragmentManager();
                fragmentTransaction=fragmentManager.beginTransaction();
                fragmentTransaction.setCustomAnimations(R.animator.slide_in_left,R.animator
                        .slide_out_left,R.animator.slide_in_right,R.animator.slide_out_right);
                Home_Screen home_screen=new Home_Screen();
                fragmentTransaction.replace(R.id.Home_screen_fragment_3,home_screen,
                        "Home_Screen_Teacher");
                fragmentTransaction.addToBackStack(null);
                fragmentTransaction.commit();

            }


        };

        timer=new Timer();
        timer.schedule(new TimerTask() {
            @Override
            public void run() {
                handler.post(runnable);
            }
        }, 5000,5000);



        return loadder_fragment;
    }
 navigation_drawer=(DrawerLayout)Home_screen.findViewById(R.id.drawer_layout);
        navigationView=(NavigationView)Home_screen.findViewById(R.id.Navigation_view_for_teacher);
        home_screen_take_attendance_button=(Button)Home_screen.findViewById(R.id
                .home_screen_take_attendance_button);
        home_screen_take_attendance_button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {

                getActivity().getFragmentManager().beginTransaction().replace(R.id
                        .fragment_take_attendance,new Take_attendance(),"take_attendence")
                        .addToBackStack(null).commit();

            }
        });
 toolbar.setNavigationOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                fragmentManager=getFragmentManager();
                fragmentTransaction=fragmentManager.beginTransaction();

                fragmentTransaction.setCustomAnimations(R.animator.slide_in_left,R.animator          .slide_out_left,R.animator.slide_in_right,R.animator.slide_out_right);
                Home_Screen home_screen=new Home_Screen();      fragmentTransaction.replace(R.id.Home_screen_fragment1,home_screen,"Home_Screen_Teacher");
                fragmentTransaction.addToBackStack(null);
                fragmentTransaction.commit();
            }
        });
           //Some code

请帮助。我在过去两天一直遇到这个问题。我已经实现了我的目标,但退出应用程序的双反压也在take Attention片段中工作,我不希望它出现。

在应用
onBackPressed()
逻辑之前,检查后堆栈上是否有任何片段

例如:

@Override
public void onBackPressed() {

    int backStackCount = getSupportFragmentManager().getBackStackEntryCount();

    if (backStackCount > 0) {
        // returns to previous fragment
        getSupportFragmentManager().popBackStack();

    } else {
        // apply your "double press" logic
        super.onBackPressed();
    }
}

在每个片段中,我需要添加“addBackStack(null)”创建
片段事务时,您需要应用,但我需要应用于特定片段。因此,我们如何获取该片段。我需要应用于主屏幕片段。如何获取主屏幕片段的对象,以便在活动中实现。检查当前显示的片段是否为您的主屏幕片段。请参阅: