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

master
ThankVinci 4 years ago
parent 425e60e649
commit d865ebdf4a

@ -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;

@ -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();
}
}

@ -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的根目录时会执行原本的返回操作
}
}

@ -38,8 +38,10 @@ public class FileHandler extends Handler {
super.handleMessage(msg);
switch (msg.what){
case FUNCTION_GET_MD5:
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;
}
}

Loading…
Cancel
Save