1.修改Handler,两个线程对应的Handler的参数都加上fragment,判断到dialog时更新UI

2.成功将两个线程中的MD5码和文件密码更新到主线程UI中
master
ThankVinci 4 years ago
parent e49885003d
commit 07bae7f577

@ -11,6 +11,7 @@ import androidx.fragment.app.Fragment;
import com.thankvinci.CloudKey.R;
public class AboutFragment extends Fragment {
public AboutFragment(){
super(R.layout.about_fragment);
}
@ -20,6 +21,8 @@ public class AboutFragment extends Fragment {
TextView verText = view.findViewById(R.id.text_version);
verText.setText("v"+getAppInfo());
}
//获取版本号
private String getAppInfo(){
String version = "";
try {

@ -17,12 +17,14 @@ import com.thankvinci.CloudKey.NetUtils.NetThread;
import com.thankvinci.CloudKey.R;
public class BugSubFragment extends Fragment {
private Fragment fragment;
public BugSubFragment(){
super(R.layout.bug_sub_fragment);
}
@Override
public void onViewCreated(View view, Bundle saveInstanceState){
super.onViewCreated(view,saveInstanceState);
fragment = this;
Toast.makeText(getActivity(),"版本信息如若有误可以修改哦~",Toast.LENGTH_LONG).show();
EditText softVerEdit = view.findViewById(R.id.soft_ver);
@ -43,7 +45,7 @@ public class BugSubFragment extends Fragment {
Toast.makeText(getActivity(),"一定要全部填写完才能提交哦~",Toast.LENGTH_SHORT).show();
return ;
}
Handler handler = new NetHandler(getActivity()){
Handler handler = new NetHandler(getActivity(),fragment){
public void handleMessage(Message msg) {
super.handleMessage(msg);
switch (msg.what){

@ -15,12 +15,17 @@ import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AlertDialog;
import androidx.fragment.app.DialogFragment;
import androidx.fragment.app.Fragment;
import com.thankvinci.CloudKey.NetUtils.NetThread;
import com.thankvinci.CloudKey.R;
import com.thankvinci.CloudKey.Utils.FileHandler;
import com.thankvinci.CloudKey.Utils.FileThread;
public class UnzipDialogFragment extends DialogFragment {
//用一个fragment来存当前这个fragment对象
Fragment fragment;
//点击压缩文件弹出来的Dialog
private UnzipDialogListener listener;
//源文件绝对路径,目标文件夹绝对路径,md5码和密码
@ -43,19 +48,18 @@ public class UnzipDialogFragment extends DialogFragment {
srcFile = getArguments().getString("srcFile");
desPath = getArguments().getString("desPath");
passwd = getArguments().getString("passwd");
fragment = this;
}
public void setListener(UnzipDialogListener listener){
this.listener = listener;
}
@Override
public View onCreateView(LayoutInflater inflater,ViewGroup container,Bundle savedInstanceState) {
Toast.makeText(getActivity(),"onCreateView",Toast.LENGTH_SHORT).show();
return super.onCreateView(inflater, container, savedInstanceState);
}
public AlertDialog onCreateDialog(Bundle savedInstanceState){
Toast.makeText(getActivity(),"onCreateDialog",Toast.LENGTH_SHORT).show();
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
LayoutInflater inflater = requireActivity().getLayoutInflater();
View view = inflater.inflate(R.layout.unzip_dialog,null);
@ -68,6 +72,7 @@ public class UnzipDialogFragment extends DialogFragment {
desPath_edit.setText(desPath);
desPath_edit.setSelection(desPath.length());
md5_edit = view.findViewById(R.id.md5_edit);
passwd_edit = view.findViewById(R.id.pwd_edit);
acceptPWD2SQL = view.findViewById(R.id.accept_pwd_2_sql);
@ -89,8 +94,11 @@ public class UnzipDialogFragment extends DialogFragment {
public void onClick(View v) {
//网络线程
Toast.makeText(getActivity(),"获取密码",Toast.LENGTH_SHORT).show();
Handler handler = new FileHandler(getActivity());
//获取MD5码
Handler handler = new FileHandler(getActivity(),fragment);
Thread ft = new Thread(new FileThread(handler,srcFile,desPath,null,FileHandler.FUNCTION_GET_MD5));
ft.start();
}
});
@ -99,7 +107,6 @@ public class UnzipDialogFragment extends DialogFragment {
public void onClick(DialogInterface dialog, int which) {
if (acceptPWD2SQL.isChecked() && !fromSQL){
}
listener.onDialogUnzipClicked();
}
@ -111,7 +118,27 @@ public class UnzipDialogFragment extends DialogFragment {
});;
return builder.create();
}
public void setFromSQL(boolean fromSQL){
this.fromSQL = fromSQL;
}
public void setPasswd(String passwd){
passwd_edit.setText(passwd);
passwd_edit.setSelection(passwd.length());
}
public void setMD5(String md5){
md5_edit.setText(md5);
md5_edit.setSelection(md5.length());
}
public String getSrcFile(){
return srcFile;
}
public String getDesPath(){
return desPath;
}
public String getMD5(){
return md5;
}
public String getPasswd(){
return passwd;
}
}

@ -28,8 +28,7 @@ public class MainActivity extends AppCompatActivity {
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//声明一个Handler
Handler handler = new NetHandler(this);
//加载NavGraph
navHostFragment = (NavHostFragment)getSupportFragmentManager().findFragmentById(R.id.nav_host_fragment);
navController = navHostFragment.getNavController();

@ -5,20 +5,34 @@ import android.os.Handler;
import android.os.Message;
import android.widget.Toast;
import androidx.fragment.app.Fragment;
import com.thankvinci.CloudKey.Fragment.UnzipDialogFragment;
import com.thankvinci.CloudKey.MainActivity;
public class NetHandler extends Handler {
private Activity activity;
public NetHandler(Activity activity){
private Fragment fragment;
public NetHandler(Activity activity,Fragment fragment){
this.activity = activity;
this.fragment = fragment;
}
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
switch (msg.what){
case 0:
Toast.makeText(activity,msg.getData().getString("key"),Toast.LENGTH_SHORT).show();
if (fragment instanceof UnzipDialogFragment){
((UnzipDialogFragment)fragment).setPasswd(msg.getData().getString("key"));
((UnzipDialogFragment)fragment).setFromSQL(true);
Toast.makeText(activity,"获取成功",Toast.LENGTH_SHORT).show();
}
break;
case -1:
Toast.makeText(activity,msg.getData().getString("ReturnData"),Toast.LENGTH_SHORT).show();
break;
default:
break;
}
}

@ -3,6 +3,7 @@ package com.thankvinci.CloudKey.NetUtils;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.util.Log;
import androidx.loader.content.CursorLoader;
@ -28,20 +29,22 @@ public class NetThread implements Runnable {
@Override
public void run(){
Message msg = new Message();
String data = getNetWork(strUrl);
String data = getNetWork(strUrl);Log.d("TAG:",data);
Bundle dataPackage = new Bundle();
if (data.equals("查无结果") || data.equals("反馈成功,感谢支持") || data.equals("反馈失败,请稍后重试") || data.equals("查询失败") || data.equals("插入失败") || data.equals("无效参数")){
msg.what = -1;
dataPackage.putString("ReturnData",data);
msg.setData(dataPackage);
handler.sendMessage(msg);
return ;
}else{
JSONObject jsonObject = JSON.parseObject(data);
dataPackage.putString("key",jsonObject.getString("pwd"));
msg.what = 0;
msg.setData(dataPackage);
handler.sendMessage(msg);
}
JSONObject jsonObject = JSON.parseObject(data);
dataPackage.putString("key",jsonObject.getString("pwd"));
msg.what = 0;
msg.setData(dataPackage);
handler.sendMessage(msg);
}
public String getNetWork(String str_url){
StringBuilder builder = new StringBuilder();

@ -5,6 +5,9 @@ import android.os.Handler;
import android.os.Message;
import android.widget.Toast;
import androidx.fragment.app.Fragment;
import com.thankvinci.CloudKey.Fragment.UnzipDialogFragment;
import com.thankvinci.CloudKey.NetUtils.NetHandler;
import com.thankvinci.CloudKey.NetUtils.NetThread;
@ -15,22 +18,24 @@ public class FileHandler extends Handler {
public final static int ERROR = -1;
private Activity activity;
private Fragment fragment;
private Handler handler;
public FileHandler(Activity activity){
public FileHandler(Activity activity,Fragment fragment){
this.activity = activity;
this.fragment = fragment;
}
@Override
public void handleMessage(Message msg) {
handler = new NetHandler(activity);
super.handleMessage(msg);
switch (msg.what){
case FUNCTION_GET_MD5:
((UnzipDialogFragment)fragment).setMD5(msg.getData().getString("md5"));
//获取文件密码
StringBuilder builder = new StringBuilder();
builder.append("http://1.14.144.194:8080/cscp/cscp?para0=query&para1=");
builder.append(msg.getData().getString("md5"));
String url = builder.toString();
Handler handler = new NetHandler(activity,fragment);
Thread nt = new Thread(new NetThread(handler,url));
nt.start();
break;

@ -10,7 +10,4 @@ public class MyUtils {
ClipboardManager cmb = (ClipboardManager)activity.getSystemService(Context.CLIPBOARD_SERVICE);
cmb.setText(str);
}
public static void onBackExit(){
}
}

@ -255,7 +255,7 @@ FileHandler负责将获取到的md5码发到NetThread,然后将得到的密码
数据流向:
主线程(文件路径)-->FileThread(MD5)-->FileHandler(MD5)-->NetThread(pwd)-->NetHandler(pwd)
主线程(文件路径)-->FileThread(MD5)-->FileHandler(MD5)-->主线程(MD5)-->NetThread(pwd)-->NetHandler(pwd)-->主线程(MD5,pwd)-->FileThread(MD5,pwd)
**2021/6/12**
@ -277,4 +277,8 @@ FileHandler负责将获取到的md5码发到NetThread,然后将得到的密码
**2021/6/12**
完成了解压缩用的dialog的布局设计,传入数据也有了,但是遇到个问题,就是,一直以来所有的Handler处理的数据我都是直接Toast出去的,如何把数据更新到Dialog,好像把当前fragment/dialogfragment作为参数传进去会方便点
完成了解压缩用的dialog的布局设计,传入数据也有了,但是遇到个问题,就是,一直以来所有的Handler处理的数据我都是直接Toast出去的,如何把数据更新到Dialog,好像把当前fragment/dialogfragment作为参数传进去会方便点
**2021/6/12**
再次删除冗余代码,整理比较乱的代码,决定等现在的功能都完成后再增加一个用户自己输入MD5获取密码的界面
Loading…
Cancel
Save