1.完成创建dialog,能传入数据,但是由子线程产生的信息还不能更新到主线程的UI上

master
ThankVinci 4 years ago
parent 8fde82cffd
commit e49885003d

@ -78,9 +78,12 @@ public class FileAdapter extends RecyclerView.Adapter<FileAdapter.ViewHolder> {
Toast.makeText(v.getContext(),"打开",Toast.LENGTH_SHORT).show();
}
});
String srcFile = builder.toString();
String desPath = srcFile.substring(0,builder.toString().lastIndexOf("."));
Bundle data = new Bundle();
data.putString("srcFile",builder.toString());
data.putString("desPath",builder.toString().substring(0,builder.toString().lastIndexOf(".")));
data.putString("srcFile",srcFile);
data.putString("desPath",desPath);
unzipDialog.setArguments(data);
unzipDialog.show(((MainActivity)v.getContext()).getSupportFragmentManager(),"unzip");

@ -2,39 +2,105 @@ package com.thankvinci.CloudKey.Fragment;
import android.content.DialogInterface;
import android.os.Bundle;
import android.os.Handler;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AlertDialog;
import androidx.fragment.app.DialogFragment;
import com.thankvinci.CloudKey.R;
import com.thankvinci.CloudKey.Utils.FileHandler;
import com.thankvinci.CloudKey.Utils.FileThread;
public class UnzipDialogFragment extends DialogFragment {
//点击压缩文件弹出来的Dialog
private UnzipDialogListener listener;
//源文件绝对路径,目标文件夹绝对路径和密码
private EditText srcFile_edit;
private EditText desPath_edit;
private EditText passwd_edit;
//源文件绝对路径,目标文件夹绝对路径,md5码和密码
private EditText srcFile_edit,desPath_edit,md5_edit,passwd_edit;
//用户勾选是否同意将密码上传到数据库
private CheckBox acceptPWD2SQL;
//用于判断密码来源是否是数据库,是的话勾选checkbox也不会进行上传操作
private boolean fromSQL;
//点击该文字就连接数据库查找密码
private TextView getPWD;
//解压的参数
private String srcFile,desPath,md5,passwd;
public interface UnzipDialogListener{
public void onDialogUnzipClicked();
}
@Override
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
srcFile = getArguments().getString("srcFile");
desPath = getArguments().getString("desPath");
passwd = getArguments().getString("passwd");
}
public void setListener(UnzipDialogListener listener){
this.listener = listener;
}
public AlertDialog onCreateDialog(Bundle bundle){
@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);
srcFile_edit = view.findViewById(R.id.src_edit);
srcFile_edit.setText(srcFile);
srcFile_edit.setSelection(srcFile.length());
desPath_edit = view.findViewById(R.id.des_edit);
desPath_edit.setText(desPath);
desPath_edit.setSelection(desPath.length());
passwd_edit = view.findViewById(R.id.pwd_edit);
acceptPWD2SQL = view.findViewById(R.id.accept_pwd_2_sql);
getPWD = view.findViewById(R.id.getpwd);
acceptPWD2SQL.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (acceptPWD2SQL.isChecked()){
Toast.makeText(getActivity(),"勾选同意",Toast.LENGTH_SHORT).show();
//网络线程
}else{
Toast.makeText(getActivity(),"取消勾选",Toast.LENGTH_SHORT).show();
}
}
});
getPWD.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//网络线程
Toast.makeText(getActivity(),"获取密码",Toast.LENGTH_SHORT).show();
Handler handler = new FileHandler(getActivity());
Thread ft = new Thread(new FileThread(handler,srcFile,desPath,null,FileHandler.FUNCTION_GET_MD5));
}
});
builder.setView(view).setTitle("解压到当前路径").setPositiveButton("解压", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
if (acceptPWD2SQL.isChecked() && !fromSQL){
}
listener.onDialogUnzipClicked();
}
}).setNegativeButton("取消", new DialogInterface.OnClickListener() {
@ -45,4 +111,7 @@ public class UnzipDialogFragment extends DialogFragment {
});;
return builder.create();
}
public void setPasswd(String passwd){
passwd_edit.setText(passwd);
}
}

@ -24,6 +24,8 @@
android:id="@+id/src_edit"
android:textColor="@color/grey"
android:focusable="false"
android:singleLine="true"
android:gravity="left"
tools:ignore="MissingConstraints"
app:layout_constraintLeft_toRightOf="@id/src_text"
app:layout_constraintBaseline_toBaselineOf="@id/src_text"
@ -48,11 +50,39 @@
android:id="@+id/des_edit"
android:textColor="@color/grey"
android:focusable="false"
android:singleLine="true"
android:gravity="left"
tools:ignore="MissingConstraints"
app:layout_constraintLeft_toRightOf="@id/des_text"
app:layout_constraintBaseline_toBaselineOf="@id/des_text"
android:layout_marginLeft="5dp"
/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/md5_text"
android:textSize="14dp"
android:text=" MD5码:"
android:textColor="@color/blue_1"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintTop_toBottomOf="@id/des_text"
android:layout_marginLeft="20dp"
android:layout_marginTop="20dp"
tools:ignore="MissingConstraints" />
<EditText
android:layout_width="220dp"
android:layout_height="wrap_content"
android:textSize="14dp"
android:id="@+id/md5_edit"
android:textColor="@color/grey"
android:singleLine="true"
android:focusable="false"
android:gravity="left"
tools:ignore="MissingConstraints"
app:layout_constraintLeft_toRightOf="@id/md5_text"
app:layout_constraintBaseline_toBaselineOf="@id/md5_text"
android:layout_marginLeft="5dp"
/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
@ -61,7 +91,7 @@
android:text="文件密码:"
android:textColor="@color/blue_1"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintTop_toBottomOf="@id/des_text"
app:layout_constraintTop_toBottomOf="@id/md5_text"
android:layout_marginLeft="20dp"
android:layout_marginTop="20dp"
tools:ignore="MissingConstraints" />
@ -71,7 +101,8 @@
android:textSize="14dp"
android:id="@+id/pwd_edit"
android:textColor="@color/grey"
android:focusable="false"
android:singleLine="true"
android:gravity="left"
tools:ignore="MissingConstraints"
app:layout_constraintLeft_toRightOf="@id/pwd_text"
app:layout_constraintBaseline_toBaselineOf="@id/pwd_text"

@ -267,4 +267,14 @@ FileHandler负责将获取到的md5码发到NetThread,然后将得到的密码
改了主题
添加了一个解压用的dialog
添加了一个解压用的dialog,但是要给dialog传入bundle数据不知道从何下手
**2021/6/12**
我要定义一个dialog,接收一个bundle,但是实例化一个dialog是直接onCreate onCreateDialog onCreateView一套带走的
其实很简单,想太复杂了,在dialog创建后,只要不调用show(),onCreate()方法就不会执行,就是在show之前传入数据,在onCreate中收数据就行了
**2021/6/12**
完成了解压缩用的dialog的布局设计,传入数据也有了,但是遇到个问题,就是,一直以来所有的Handler处理的数据我都是直接Toast出去的,如何把数据更新到Dialog,好像把当前fragment/dialogfragment作为参数传进去会方便点
Loading…
Cancel
Save