Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/187.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 检测片段中按下的backbutton_Android_Android Fragments - Fatal编程技术网

Android 检测片段中按下的backbutton

Android 检测片段中按下的backbutton,android,android-fragments,Android,Android Fragments,我需要检测在片段中按下的backbutton 我的应用程序开始下载数据片段,所以我需要停止下载(也做一些操作)上的后退按钮按下,而不需要如果主页按钮按下。所以我不能使用onPause(),因为它在两种情况下都被调用 我使用addToBackStack(null),但我需要在当前片段中执行一些操作(停止下载和),然后返回到上一个片段 getSupportFragmentManager() .beginTransaction() .replace(R.id.content_frame,

我需要检测在片段中按下的backbutton

我的应用程序开始下载数据片段,所以我需要停止下载(也做一些操作)上的后退按钮按下,而不需要如果主页按钮按下。所以我不能使用onPause(),因为它在两种情况下都被调用

我使用addToBackStack(null),但我需要在当前片段中执行一些操作(停止下载和),然后返回到上一个片段

getSupportFragmentManager()
   .beginTransaction()
   .replace(R.id.content_frame, fragment)
   .addToBackStack(null)
   .commit();   
this.getActivity().getSupportFragmentManager().beginTransaction()
            .remove(this).commit();

当你完成了你想在片段中做的事情后,你可以使用类似这样的方法来删除当前片段。如果最后一个片段被添加到堆栈中(如您所述),那么删除当前片段将自动显示最后一个片段

getSupportFragmentManager()
   .beginTransaction()
   .replace(R.id.content_frame, fragment)
   .addToBackStack(null)
   .commit();   
this.getActivity().getSupportFragmentManager().beginTransaction()
            .remove(this).commit();

看看这个

在您的活动中,您可以覆盖onBackPressed()et,然后调用popBackStack

在片段的onDestroyView()中执行此操作谢谢。但我不需要删除片段。那么,如果您不想删除当前片段,在处理完当前片段后,您将如何返回到最后一个片段?好的!如果使用asyncTask,则可以在onPause方法上使用asyncTask.cancel()。如果要执行特定作业,请在调用AsyncTask.cancel()时调用onCancelled()。超越它!