diff --git a/CloudKey/app/src/main/java/com/thankvinci/CloudKey/Fragment/FileManageFragment.java b/CloudKey/app/src/main/java/com/thankvinci/CloudKey/Fragment/FileManageFragment.java index 39d77c7..a62ebf3 100644 --- a/CloudKey/app/src/main/java/com/thankvinci/CloudKey/Fragment/FileManageFragment.java +++ b/CloudKey/app/src/main/java/com/thankvinci/CloudKey/Fragment/FileManageFragment.java @@ -19,6 +19,7 @@ import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.core.app.ActivityCompat; import androidx.fragment.app.Fragment; +import androidx.fragment.app.FragmentManager; import androidx.recyclerview.widget.RecyclerView; import androidx.recyclerview.widget.StaggeredGridLayoutManager; diff --git a/CloudKey/app/src/main/java/com/thankvinci/CloudKey/Fragment/UnzipDialogFragment.java b/CloudKey/app/src/main/java/com/thankvinci/CloudKey/Fragment/UnzipDialogFragment.java index 4cbb26b..84baa07 100644 --- a/CloudKey/app/src/main/java/com/thankvinci/CloudKey/Fragment/UnzipDialogFragment.java +++ b/CloudKey/app/src/main/java/com/thankvinci/CloudKey/Fragment/UnzipDialogFragment.java @@ -5,6 +5,7 @@ import android.os.Build; import android.os.Bundle; import android.os.Handler; import android.util.Log; +import android.view.KeyEvent; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -62,6 +63,8 @@ public class UnzipDialogFragment extends DialogFragment { private String srcFile,desPath,md5,passwd; //解压是否成功 private boolean successful; + //当前dialog是否可视 + private boolean isVisable; public interface UnzipDialogListener{ public void onDialogUnzipClicked(); @@ -112,6 +115,7 @@ public class UnzipDialogFragment extends DialogFragment { fromSQL = false; successful = false; + isVisable = true; try { if(!FileUtils.isEncrypted(srcFile)){ //当文件不是加密文件时 @@ -189,6 +193,7 @@ public class UnzipDialogFragment extends DialogFragment { alertDialog.setCanceledOnTouchOutside(false); if (alertDialog != null){ Button pb = alertDialog.getButton(AlertDialog.BUTTON_POSITIVE); + Button nb = alertDialog.getButton(AlertDialog.BUTTON_NEGATIVE); pb.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { @@ -199,13 +204,25 @@ public class UnzipDialogFragment extends DialogFragment { Thread ft = new Thread(new FileThread(fHandler,srcFile,desPath,passwd,FileHandler.FUNCTION_DECOMPRESS)); ft.start(); progressBar.setVisibility(View.VISIBLE); - Button nb = alertDialog.getButton(AlertDialog.BUTTON_NEGATIVE); nb.setClickable(false); nb.setTextColor(getResources().getColor(R.color.grey_1)); } }); + nb.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + dismiss(); + } + }); } } + + @Override + public void onStop() { + super.onStop(); + dismiss(); + } + public void setFromSQL(boolean fromSQL){ this.fromSQL = fromSQL; } @@ -265,4 +282,15 @@ public class UnzipDialogFragment extends DialogFragment { public FileManageFragment getFMFragment(){ return fmFragment; } + public void setVisable(boolean v){ + this.isVisable = v; + } + public boolean getVisable(){ + return isVisable; + } + public void dismiss(){ + Toast.makeText(getActivity(),"重写dismiss",Toast.LENGTH_SHORT).show(); + setVisable(false); + super.dismiss(); + } } diff --git a/CloudKey/app/src/main/java/com/thankvinci/CloudKey/MainActivity.java b/CloudKey/app/src/main/java/com/thankvinci/CloudKey/MainActivity.java index f5da1e7..1205555 100644 --- a/CloudKey/app/src/main/java/com/thankvinci/CloudKey/MainActivity.java +++ b/CloudKey/app/src/main/java/com/thankvinci/CloudKey/MainActivity.java @@ -3,6 +3,7 @@ package com.thankvinci.CloudKey; import androidx.appcompat.app.AppCompatActivity; import androidx.drawerlayout.widget.DrawerLayout; import androidx.fragment.app.Fragment; +import androidx.fragment.app.FragmentManager; import androidx.navigation.NavController; import androidx.navigation.fragment.NavHostFragment; import androidx.navigation.ui.AppBarConfiguration; @@ -17,6 +18,7 @@ import android.widget.Toast; import com.google.android.material.navigation.NavigationView; import com.thankvinci.CloudKey.Fragment.FileManageFragment; +import com.thankvinci.CloudKey.Fragment.UnzipDialogFragment; import com.thankvinci.CloudKey.NetUtils.NetHandler; import com.thankvinci.CloudKey.NetUtils.NetThread; @@ -56,6 +58,7 @@ public class MainActivity extends AppCompatActivity { } } } + return super.onKeyDown(key, event); //只有当当前页面不是fm的根目录时会执行原本的返回操作 } } \ No newline at end of file diff --git a/CloudKey/app/src/main/java/com/thankvinci/CloudKey/Utils/FileHandler.java b/CloudKey/app/src/main/java/com/thankvinci/CloudKey/Utils/FileHandler.java index b0ce31e..61f6aa8 100644 --- a/CloudKey/app/src/main/java/com/thankvinci/CloudKey/Utils/FileHandler.java +++ b/CloudKey/app/src/main/java/com/thankvinci/CloudKey/Utils/FileHandler.java @@ -38,8 +38,10 @@ public class FileHandler extends Handler { super.handleMessage(msg); switch (msg.what){ case FUNCTION_GET_MD5: - ((UnzipDialogFragment)fragment).setMD5(msg.getData().getString("md5")); - ((UnzipDialogFragment)fragment).setProgressBar(View.INVISIBLE); + if(((UnzipDialogFragment)fragment).getVisable()){ + ((UnzipDialogFragment)fragment).setMD5(msg.getData().getString("md5")); + ((UnzipDialogFragment)fragment).setProgressBar(View.INVISIBLE); + } break; case FUNCTION_ERROR: Toast.makeText(activity,msg.getData().getString("error"),Toast.LENGTH_SHORT).show(); @@ -65,7 +67,6 @@ public class FileHandler extends Handler { Thread nt = new Thread(new NetThread(handler,builder.toString())); nt.start(); } - break; } }