From fdcfe6ef562cc3e8bbd6fcf2faedfbd9571f4490 Mon Sep 17 00:00:00 2001
From: hxb <hxb@hdlchina.com.cn>
Date: 星期一, 01 四月 2024 14:33:42 +0800
Subject: [PATCH] 解决小程序白屏的问题

---
 app/src/main/java/com/hdl/photovoltaic/widget/ListDialog.java |   98 ++++++++++++++++++++-----------------------------
 1 files changed, 40 insertions(+), 58 deletions(-)

diff --git a/app/src/main/java/com/hdl/photovoltaic/widget/ListDialog.java b/app/src/main/java/com/hdl/photovoltaic/widget/ListDialog.java
index cd25868..a179bf3 100644
--- a/app/src/main/java/com/hdl/photovoltaic/widget/ListDialog.java
+++ b/app/src/main/java/com/hdl/photovoltaic/widget/ListDialog.java
@@ -1,21 +1,18 @@
 package com.hdl.photovoltaic.widget;
 
+import android.annotation.SuppressLint;
 import android.app.Dialog;
 import android.content.Context;
 import android.content.Intent;
 import android.os.Bundle;
-import android.view.Gravity;
-import android.view.MotionEvent;
 import android.view.View;
-import android.view.ViewGroup;
-import android.view.Window;
-import android.view.WindowManager;
 
 import androidx.annotation.NonNull;
 import androidx.recyclerview.widget.LinearLayoutManager;
 
 import com.hdl.photovoltaic.HDLApp;
 import com.hdl.photovoltaic.R;
+import com.hdl.photovoltaic.base.BaseDialog;
 import com.hdl.photovoltaic.config.UserConfigManage;
 import com.hdl.photovoltaic.databinding.DialogListBinding;
 import com.hdl.photovoltaic.ui.StartActivity;
@@ -24,18 +21,17 @@
 import com.hdl.photovoltaic.utils.LocalManageUtil;
 import com.hdl.photovoltaic.widget.adapter.ListDialogAdapter;
 
-import java.util.ArrayList;
 import java.util.List;
 
 /**
  * 鍔ㄦ�佸垪琛ㄥ脊绐�
  */
-public class ListDialog extends Dialog {
+public class ListDialog extends BaseDialog {
     private DialogListBinding viewBinding;
 
     private ListDialogAdapter listDialogAdapter;
     private final Context mContext;
-    private List<ListDialogAdapter.DialogItemData> list;
+    private List<LanguageAdapter.ItemData> list;
 
     private ListDialogAdapter.OnclickListener itemOnclickListener;//鐐瑰嚮浜嗙殑鐩戝惉鍣�
 
@@ -43,6 +39,7 @@
         super(context, R.style.Custom_List_Dialog);
         this.mContext = context;
     }
+
 
     @Override
     protected void onCreate(Bundle savedInstanceState) {
@@ -57,13 +54,17 @@
         viewBinding.logicRcv.setAdapter(listDialogAdapter);
         listDialogAdapter.setItemOnclickListener(new ListDialogAdapter.OnclickListener() {
             @Override
-            public void onClick(int position, ListDialogAdapter.DialogItemData itemData) {
+            public void onClick(int position, LanguageAdapter.ItemData itemData) {
                 for (int i = 0; i < list.size(); i++) {
-                    ListDialogAdapter.DialogItemData data = list.get(i);
+                    LanguageAdapter.ItemData data = list.get(i);
                     data.setState(false);
                 }
                 list.get(position).setState(true);
                 listDialogAdapter.notifyDataSetChanged();
+                if (UserConfigManage.getInstance().getCurrentAppLanguage().equals(itemData.getLanguage())) {
+                    //鍚屼竴涓笉鎵ц寮圭獥
+                    return;
+                }
                 languageSelectionDialog(position, itemData);
             }
         });
@@ -75,20 +76,9 @@
     }
 
     private void initData() {
-        list = new ArrayList<>();
-        ListDialogAdapter.DialogItemData zh = new ListDialogAdapter.DialogItemData();
-        zh.setState(false);
-        zh.setTitle("绠�浣撲腑鏂�");
-        zh.setLanguage(LocalManageUtil.zh);
-        list.add(zh);
-        ListDialogAdapter.DialogItemData en = new ListDialogAdapter.DialogItemData();
-        en.setState(false);
-        en.setTitle("English");
-        en.setLanguage(LocalManageUtil.en);
-        list.add(en);
-
+        list = LocalManageUtil.getLanguageList();
         for (int i = 0; i < list.size(); i++) {
-            ListDialogAdapter.DialogItemData itemData = list.get(i);
+            LanguageAdapter.ItemData itemData = list.get(i);
             if (itemData.getLanguage().equals(UserConfigManage.getInstance().getCurrentAppLanguage())) {
                 //鍒濆鍖栦箣鍓嶇姸鎬�
                 itemData.setState(true);
@@ -102,7 +92,8 @@
      * @param position 绱㈠紩鍊�
      * @param itemData 閫変腑鏁版嵁
      */
-    private void languageSelectionDialog(int position, ListDialogAdapter.DialogItemData itemData) {
+    private void languageSelectionDialog(int position, LanguageAdapter.ItemData itemData) {
+
         ConfirmationCancelDialog dialog = new ConfirmationCancelDialog(this.mContext);
         dialog.setTitle(this.mContext.getString(R.string.loading_title_tip));
         dialog.setContent(this.mContext.getString(R.string.loading_app_restart));
@@ -110,61 +101,52 @@
         dialog.setYesOnclickListener(new ConfirmationCancelDialog.onYesOnclickListener() {
             @Override
             public void Confirm() {
+                dialog.dismiss();
                 if (itemOnclickListener != null) {
                     itemOnclickListener.onClick(position, itemData);
                 }
-                dismiss();
-                UserConfigManage.getInstance().setCurrentAppLanguage(itemData.getLanguage());
-                UserConfigManage.getInstance().Save();
-                AppManagerUtils.getAppManager().finishAllActivity();
-                Intent intent = new Intent();
-                intent.setClass(HDLApp.getInstance(), StartActivity.class);
-                mContext.startActivity(intent);
             }
         });
         dialog.setNoOnclickListener(new ConfirmationCancelDialog.onNoOnclickListener() {
             @Override
             public void Cancel() {
+                //鍙栨秷涔嬪悗杩樺師涔嬪墠鐘舵��
+                for (int i = 0; i < list.size(); i++) {
+                    LanguageAdapter.ItemData data = list.get(i);
+                    data.setState(false);
+                    if (UserConfigManage.getInstance().getCurrentAppLanguage().equals(data.getLanguage())) {
+                        data.setState(true);
+                    }
+                }
+                listDialogAdapter.notifyDataSetChanged();
                 dialog.dismiss();
             }
         });
     }
 
-    //瑙e喅dialog.setCanceledOnTouchOutside(true) 涓嶇敓鏁堥棶棰�
+
+    @SuppressLint("ClickableViewAccessibility")
     public void setDialogTouchOutsideCloseable(Dialog dialog) {
-        viewBinding.getRoot().setOnTouchListener(new View.OnTouchListener() {
+        viewBinding.getRoot().setOnClickListener(new View.OnClickListener() {
             @Override
-            public boolean onTouch(View v, MotionEvent event) {
+            public void onClick(View v) {
                 int top = viewBinding.dialogParent.getTop();
                 int left = viewBinding.dialogParent.getLeft();
                 int bottom = viewBinding.dialogParent.getBottom();
                 int right = viewBinding.dialogParent.getRight();
-                int y = (int) event.getY();
-                int x = (int) event.getX();
-                if (event.getAction() == MotionEvent.ACTION_UP) {
-                    if (top < y && y < bottom) {
-
-                    } else {
-                        dismiss();
-                    }
-
-                    if (left < x && x < right) {
-
-                    } else {
-                        dismiss();
-                    }
-
-
+                int y = (int) v.getY();
+                int x = (int) v.getX();
+                if (top < y && y < bottom) {
+                } else {
+                    dismiss();
                 }
-                return true;
+                if (left < x && x < right) {
+
+                } else {
+                    dismiss();
+                }
+
             }
         });
-//        Window window = dialog.getWindow();
-//        WindowManager.LayoutParams params = window.getAttributes();
-//        params.width = ViewGroup.LayoutParams.MATCH_PARENT;
-//        params.height = ViewGroup.LayoutParams.MATCH_PARENT;
-//        window.setAttributes(params);
-//        //绌虹櫧澶勪笉鑳藉彇娑堝姩鐢�
-//        setCanceledOnTouchOutside(true);
     }
 }

--
Gitblit v1.8.0