修复了在获取大文件md5时按返回键或者取消时,返回数据找不到目标控件引起的异常

master
ThankVinci 4 years ago
parent 425e60e649
commit d865ebdf4a

@ -19,6 +19,7 @@ import androidx.annotation.NonNull;
import androidx.annotation.Nullable; import androidx.annotation.Nullable;
import androidx.core.app.ActivityCompat; import androidx.core.app.ActivityCompat;
import androidx.fragment.app.Fragment; import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentManager;
import androidx.recyclerview.widget.RecyclerView; import androidx.recyclerview.widget.RecyclerView;
import androidx.recyclerview.widget.StaggeredGridLayoutManager; import androidx.recyclerview.widget.StaggeredGridLayoutManager;

@ -5,6 +5,7 @@ import android.os.Build;
import android.os.Bundle; import android.os.Bundle;
import android.os.Handler; import android.os.Handler;
import android.util.Log; import android.util.Log;
import android.view.KeyEvent;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.View; import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
@ -62,6 +63,8 @@ public class UnzipDialogFragment extends DialogFragment {
private String srcFile,desPath,md5,passwd; private String srcFile,desPath,md5,passwd;
//解压是否成功 //解压是否成功
private boolean successful; private boolean successful;
//当前dialog是否可视
private boolean isVisable;
public interface UnzipDialogListener{ public interface UnzipDialogListener{
public void onDialogUnzipClicked(); public void onDialogUnzipClicked();
@ -112,6 +115,7 @@ public class UnzipDialogFragment extends DialogFragment {
fromSQL = false; fromSQL = false;
successful = false; successful = false;
isVisable = true;
try { try {
if(!FileUtils.isEncrypted(srcFile)){ if(!FileUtils.isEncrypted(srcFile)){
//当文件不是加密文件时 //当文件不是加密文件时
@ -189,6 +193,7 @@ public class UnzipDialogFragment extends DialogFragment {
alertDialog.setCanceledOnTouchOutside(false); alertDialog.setCanceledOnTouchOutside(false);
if (alertDialog != null){ if (alertDialog != null){
Button pb = alertDialog.getButton(AlertDialog.BUTTON_POSITIVE); Button pb = alertDialog.getButton(AlertDialog.BUTTON_POSITIVE);
Button nb = alertDialog.getButton(AlertDialog.BUTTON_NEGATIVE);
pb.setOnClickListener(new View.OnClickListener() { pb.setOnClickListener(new View.OnClickListener() {
@Override @Override
public void onClick(View v) { 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)); Thread ft = new Thread(new FileThread(fHandler,srcFile,desPath,passwd,FileHandler.FUNCTION_DECOMPRESS));
ft.start(); ft.start();
progressBar.setVisibility(View.VISIBLE); progressBar.setVisibility(View.VISIBLE);
Button nb = alertDialog.getButton(AlertDialog.BUTTON_NEGATIVE);
nb.setClickable(false); nb.setClickable(false);
nb.setTextColor(getResources().getColor(R.color.grey_1)); 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){ public void setFromSQL(boolean fromSQL){
this.fromSQL = fromSQL; this.fromSQL = fromSQL;
} }
@ -265,4 +282,15 @@ public class UnzipDialogFragment extends DialogFragment {
public FileManageFragment getFMFragment(){ public FileManageFragment getFMFragment(){
return fmFragment; 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();
}
} }

@ -3,6 +3,7 @@ package com.thankvinci.CloudKey;
import androidx.appcompat.app.AppCompatActivity; import androidx.appcompat.app.AppCompatActivity;
import androidx.drawerlayout.widget.DrawerLayout; import androidx.drawerlayout.widget.DrawerLayout;
import androidx.fragment.app.Fragment; import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentManager;
import androidx.navigation.NavController; import androidx.navigation.NavController;
import androidx.navigation.fragment.NavHostFragment; import androidx.navigation.fragment.NavHostFragment;
import androidx.navigation.ui.AppBarConfiguration; import androidx.navigation.ui.AppBarConfiguration;
@ -17,6 +18,7 @@ import android.widget.Toast;
import com.google.android.material.navigation.NavigationView; import com.google.android.material.navigation.NavigationView;
import com.thankvinci.CloudKey.Fragment.FileManageFragment; import com.thankvinci.CloudKey.Fragment.FileManageFragment;
import com.thankvinci.CloudKey.Fragment.UnzipDialogFragment;
import com.thankvinci.CloudKey.NetUtils.NetHandler; import com.thankvinci.CloudKey.NetUtils.NetHandler;
import com.thankvinci.CloudKey.NetUtils.NetThread; import com.thankvinci.CloudKey.NetUtils.NetThread;
@ -56,6 +58,7 @@ public class MainActivity extends AppCompatActivity {
} }
} }
} }
return super.onKeyDown(key, event); //只有当当前页面不是fm的根目录时会执行原本的返回操作 return super.onKeyDown(key, event); //只有当当前页面不是fm的根目录时会执行原本的返回操作
} }
} }

@ -38,8 +38,10 @@ public class FileHandler extends Handler {
super.handleMessage(msg); super.handleMessage(msg);
switch (msg.what){ switch (msg.what){
case FUNCTION_GET_MD5: case FUNCTION_GET_MD5:
if(((UnzipDialogFragment)fragment).getVisable()){
((UnzipDialogFragment)fragment).setMD5(msg.getData().getString("md5")); ((UnzipDialogFragment)fragment).setMD5(msg.getData().getString("md5"));
((UnzipDialogFragment)fragment).setProgressBar(View.INVISIBLE); ((UnzipDialogFragment)fragment).setProgressBar(View.INVISIBLE);
}
break; break;
case FUNCTION_ERROR: case FUNCTION_ERROR:
Toast.makeText(activity,msg.getData().getString("error"),Toast.LENGTH_SHORT).show(); 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())); Thread nt = new Thread(new NetThread(handler,builder.toString()));
nt.start(); nt.start();
} }
break; break;
} }
} }

Loading…
Cancel
Save