From bb0fd6a7c69f439e4896b71cacc7fa33a1ff25d7 Mon Sep 17 00:00:00 2001
From: riku <risaku@163.com>
Date: 星期四, 27 八月 2020 09:21:09 +0800
Subject: [PATCH] 1. 新增BaseDialog,解决关闭dialog时,activity已经关闭导致崩溃问题 2. 修复技防措施界面MenuNewGitActivity在本地查询技防措施时出现null字段导致崩溃问题 3.修复NewSubTaskViewModel根据场景类型刷新展示列表时,由于网络访问耗时操作,导致之前选择的场景类型下标索引越界导致崩溃问题 4.修复MainActivity中fragment切换时可能崩溃问题

---
 app/src/main/java/cn/flightfeather/thirdapp/module/inspection/ShareProblemActivity.kt |    2 
 app/src/main/java/cn/flightfeather/thirdapp/module/MainActivity.java                  |    2 
 app/src/main/java/cn/flightfeather/thirdapp/module/task/NewSubTaskViewModel.kt        |    4 ++
 app/src/main/java/cn/flightfeather/thirdapp/util/DialogUtil.java                      |    9 ++--
 app/src/main/java/cn/flightfeather/thirdapp/CommonApplication.java                    |   16 ++++----
 app/src/main/java/cn/flightfeather/thirdapp/module/base/BaseDialog.kt                 |   44 ++++++++++++++++++++++
 app/src/main/java/cn/flightfeather/thirdapp/module/inspection/MenuNewGitActivity.kt   |    8 ++--
 app/src/main/java/cn/flightfeather/thirdapp/adapter/PhotoListAdapter.java             |    3 +
 .idea/codeStyles/Project.xml                                                          |   18 +++++++++
 9 files changed, 88 insertions(+), 18 deletions(-)

diff --git a/.idea/codeStyles/Project.xml b/.idea/codeStyles/Project.xml
index 681f41a..0d15693 100644
--- a/.idea/codeStyles/Project.xml
+++ b/.idea/codeStyles/Project.xml
@@ -1,5 +1,23 @@
 <component name="ProjectCodeStyleConfiguration">
   <code_scheme name="Project" version="173">
+    <JetCodeStyleSettings>
+      <option name="PACKAGES_TO_USE_STAR_IMPORTS">
+        <value>
+          <package name="java.util" alias="false" withSubpackages="false" />
+          <package name="kotlinx.android.synthetic" alias="false" withSubpackages="true" />
+          <package name="io.ktor" alias="false" withSubpackages="true" />
+        </value>
+      </option>
+      <option name="PACKAGES_IMPORT_LAYOUT">
+        <value>
+          <package name="" alias="false" withSubpackages="true" />
+          <package name="java" alias="false" withSubpackages="true" />
+          <package name="javax" alias="false" withSubpackages="true" />
+          <package name="kotlin" alias="false" withSubpackages="true" />
+          <package name="" alias="true" withSubpackages="true" />
+        </value>
+      </option>
+    </JetCodeStyleSettings>
     <codeStyleSettings language="XML">
       <indentOptions>
         <option name="CONTINUATION_INDENT_SIZE" value="4" />
diff --git a/app/src/main/java/cn/flightfeather/thirdapp/CommonApplication.java b/app/src/main/java/cn/flightfeather/thirdapp/CommonApplication.java
index ab64c82..64f6ced 100644
--- a/app/src/main/java/cn/flightfeather/thirdapp/CommonApplication.java
+++ b/app/src/main/java/cn/flightfeather/thirdapp/CommonApplication.java
@@ -27,10 +27,10 @@
 
 public class CommonApplication extends Application {
 //    private  final String ROOTURL="http://106.14.187.51:8801/supervision/";
-    private  final String ROOTURL="http://192.168.0.200:8080/";
-    private  final String ROOTURL_IMAGE="http://192.168.0.200:8080/images/";
-    private final String ROOTURL_REALEASE = "http://47.100.191.150:9005/";
-    public final String ROOTURL_REALEASE_IMAGE = "http://47.100.191.150:9005/images/";
+    public final String ROOT_URL ="http://192.168.0.200:8080/";
+    public final String ROOT_URL_IMAGE ="http://192.168.0.200:8080/images/";
+    public final String ROOT_URL_RELEASE = "http://47.100.191.150:9005/";
+    public final String ROOT_URL_RELEASE_IMAGE = "http://47.100.191.150:9005/images/";
     private Retrofit retrofit;
     private Retrofit retrofitImage;
     private DaoSession daoSession;
@@ -74,13 +74,13 @@
 
             if (released){
                 retrofit = new Retrofit.Builder()
-                        .baseUrl(ROOTURL_REALEASE)
+                        .baseUrl(ROOT_URL_RELEASE)
                         .addConverterFactory(GsonConverterFactory.create(gson))
                         .addCallAdapterFactory(RxJava2CallAdapterFactory.create())
                         .build();
             }else {
                 retrofit = new Retrofit.Builder()
-                        .baseUrl(ROOTURL)
+                        .baseUrl(ROOT_URL)
                         .addConverterFactory(GsonConverterFactory.create(gson))
                         .addCallAdapterFactory(RxJava2CallAdapterFactory.create())
                         .build();
@@ -102,12 +102,12 @@
                     .create();
             if (released){
                 retrofitImage = new Retrofit.Builder()
-                        .baseUrl(ROOTURL_REALEASE_IMAGE)
+                        .baseUrl(ROOT_URL_RELEASE_IMAGE)
                         .addConverterFactory(GsonConverterFactory.create(gson))
                         .build();
             }else {
                 retrofitImage = new Retrofit.Builder()
-                        .baseUrl(ROOTURL_IMAGE)
+                        .baseUrl(ROOT_URL_IMAGE)
                         .addConverterFactory(GsonConverterFactory.create(gson))
                         .build();
             }
diff --git a/app/src/main/java/cn/flightfeather/thirdapp/adapter/PhotoListAdapter.java b/app/src/main/java/cn/flightfeather/thirdapp/adapter/PhotoListAdapter.java
index 2935097..1b1555f 100644
--- a/app/src/main/java/cn/flightfeather/thirdapp/adapter/PhotoListAdapter.java
+++ b/app/src/main/java/cn/flightfeather/thirdapp/adapter/PhotoListAdapter.java
@@ -41,6 +41,9 @@
     @Override
     public void onBindViewHolder(PhotoListHolder holder, int position) {
         Mediafile mediafile = mediafileList.get(position);
+//        String url = CommonApplication.getInstance().ROOT_URL_RELEASE_IMAGE + mediafile.getExtension1() + mediafile.getGuid() + ".jpg";
+//        Glide.with(context).asDrawable().load(url).override(100,100).skipMemoryCache(true).diskCacheStrategy(DiskCacheStrategy.ALL).into(holder.iv_photo);
+
         File file = new File(Environment.getExternalStorageDirectory(),mediafile.getPath()+mediafile.getDescription());
         if (file.exists()){
             SetImageTask task = new SetImageTask(file,holder.iv_photo);
diff --git a/app/src/main/java/cn/flightfeather/thirdapp/module/MainActivity.java b/app/src/main/java/cn/flightfeather/thirdapp/module/MainActivity.java
index 672206e..4bb5073 100644
--- a/app/src/main/java/cn/flightfeather/thirdapp/module/MainActivity.java
+++ b/app/src/main/java/cn/flightfeather/thirdapp/module/MainActivity.java
@@ -185,7 +185,7 @@
                 fragmentTransaction.show(fragmentList.get(position));
             }
             fragmentCurrent = fragmentList.get(position);
-            fragmentTransaction.commit();
+            fragmentTransaction.commitAllowingStateLoss();
         }
     }
 
diff --git a/app/src/main/java/cn/flightfeather/thirdapp/module/base/BaseDialog.kt b/app/src/main/java/cn/flightfeather/thirdapp/module/base/BaseDialog.kt
new file mode 100644
index 0000000..8559bfd
--- /dev/null
+++ b/app/src/main/java/cn/flightfeather/thirdapp/module/base/BaseDialog.kt
@@ -0,0 +1,44 @@
+package cn.flightfeather.thirdapp.module.base
+
+import android.app.Activity
+import android.app.Dialog
+import android.arch.lifecycle.Lifecycle
+import android.arch.lifecycle.LifecycleObserver
+import android.arch.lifecycle.OnLifecycleEvent
+import android.content.Context
+import android.os.Bundle
+import android.support.v4.app.FragmentActivity
+
+/**
+ * @author riku
+ * Date: 2020/8/21
+ * 娣诲姞瀵硅瘽妗嗘樉绀洪殣钘忔椂瀵筧ctivity鐢熷懡鍛ㄦ湡鐨勫垽鏂�
+ */
+class BaseDialog(private val mContext: Context) : Dialog(mContext), LifecycleObserver {
+
+    init {
+        if (mContext is FragmentActivity) {
+            (mContext as FragmentActivity).lifecycle.addObserver(this)
+        }
+    }
+
+
+    override fun dismiss() {
+        if (mContext is Activity && !(mContext as Activity).isFinishing) {
+            super.dismiss()
+        }
+    }
+
+    override fun show() {
+        if (mContext is Activity && !(mContext as Activity).isFinishing) {
+            super.show()
+        }
+    }
+
+    @OnLifecycleEvent(Lifecycle.Event.ON_DESTROY)
+    fun onDestroy() {
+        if (isShowing) {
+            dismiss()
+        }
+    }
+}
\ No newline at end of file
diff --git a/app/src/main/java/cn/flightfeather/thirdapp/module/inspection/MenuNewGitActivity.kt b/app/src/main/java/cn/flightfeather/thirdapp/module/inspection/MenuNewGitActivity.kt
index eceb65a..09b094f 100644
--- a/app/src/main/java/cn/flightfeather/thirdapp/module/inspection/MenuNewGitActivity.kt
+++ b/app/src/main/java/cn/flightfeather/thirdapp/module/inspection/MenuNewGitActivity.kt
@@ -154,11 +154,11 @@
         et_problemDes.visibility = View.GONE
         ll_change_suggestion.visibility = View.GONE
         //鍔犺浇棰勭疆鏁版嵁
-        val gittypeList =  DbFactory.getInstance().gittypeDao.queryBuilder()
+        val gittypeList = DbFactory.getInstance().gittypeDao.queryBuilder()
                 .where(
-                        GittypeDao.Properties.Tasktype.eq(subTask?.type) ,
-                        GittypeDao.Properties.Scensetype.eq(scene?.type),
-                        GittypeDao.Properties.Districtname.eq(subTask?.districtname)
+                        GittypeDao.Properties.Tasktype.eq(subTask?.type ?: ""),
+                        GittypeDao.Properties.Scensetype.eq(scene?.type ?: ""),
+                        GittypeDao.Properties.Districtname.eq(subTask?.districtname ?: "")
                 ).orderAsc(GittypeDao.Properties.Typeid).list()
         if (gittypeList.size == 0) {
             val gittype1 = Gittype()
diff --git a/app/src/main/java/cn/flightfeather/thirdapp/module/inspection/ShareProblemActivity.kt b/app/src/main/java/cn/flightfeather/thirdapp/module/inspection/ShareProblemActivity.kt
index 6db796b..bc8c569 100644
--- a/app/src/main/java/cn/flightfeather/thirdapp/module/inspection/ShareProblemActivity.kt
+++ b/app/src/main/java/cn/flightfeather/thirdapp/module/inspection/ShareProblemActivity.kt
@@ -34,7 +34,7 @@
         problemVoList?.forEach {vo ->
             val mediaFileList = mutableListOf<Pair<Boolean, String>>()
             vo.mediafileList.forEach {
-                mediaFileList.add(Pair(it.ischanged, CommonApplication.getInstance().ROOTURL_REALEASE_IMAGE + it.extension1 + it.guid + ".jpg"))
+                mediaFileList.add(Pair(it.ischanged, CommonApplication.getInstance().ROOT_URL_RELEASE_IMAGE + it.extension1 + it.guid + ".jpg"))
             }
 
             infoList.add(ShareProblemPreViewActivity.Problem(
diff --git a/app/src/main/java/cn/flightfeather/thirdapp/module/task/NewSubTaskViewModel.kt b/app/src/main/java/cn/flightfeather/thirdapp/module/task/NewSubTaskViewModel.kt
index 3e46fba..7d00dd7 100644
--- a/app/src/main/java/cn/flightfeather/thirdapp/module/task/NewSubTaskViewModel.kt
+++ b/app/src/main/java/cn/flightfeather/thirdapp/module/task/NewSubTaskViewModel.kt
@@ -169,6 +169,10 @@
      * 鏍规嵁鎵�閫夊満鏅被鍨嬪強鏄惁鐩戠鍒锋柊鍦烘櫙
      */
     fun refreshScene() {
+        //sceneTypeList浼氭牴鎹仈缃戣幏鍙栫殑鍦烘櫙鍙樻洿鍐呭锛屾澶勫垽鏂繚璇佷笅鏍囦笉浼氳秺鐣�
+        if (selectedTypeIndex >= sceneTypeList.size) {
+            selectedTypeIndex = 0
+        }
         //绛涢�夊満鏅被鍨�
         val tmp = ArrayList<Scense>()
         if (selectedTypeIndex == 0) {
diff --git a/app/src/main/java/cn/flightfeather/thirdapp/util/DialogUtil.java b/app/src/main/java/cn/flightfeather/thirdapp/util/DialogUtil.java
index b91e19f..6dd6cbb 100644
--- a/app/src/main/java/cn/flightfeather/thirdapp/util/DialogUtil.java
+++ b/app/src/main/java/cn/flightfeather/thirdapp/util/DialogUtil.java
@@ -13,6 +13,7 @@
 import com.cazaea.sweetalert.SweetAlertDialog;
 
 import cn.flightfeather.thirdapp.R;
+import cn.flightfeather.thirdapp.module.base.BaseDialog;
 
 /**
  * Created by feiyu on 2018/8/3.
@@ -21,7 +22,7 @@
 
 public class DialogUtil {
 
-    public static Dialog createLoadingDialog(Context context, String msg) {
+    public static BaseDialog createLoadingDialog(Context context, String msg) {
         LayoutInflater inflater = LayoutInflater.from(context);
         View v = inflater.inflate(R.layout.layout_loading, null);// 寰楀埌鍔犺浇view
         LinearLayout layout = (LinearLayout) v
@@ -29,7 +30,7 @@
 //        TextView tipTextView = (TextView) v.findViewById(R.id.tipTextView);// 鎻愮ず鏂囧瓧
 //        tipTextView.setTitle(msg);// 璁剧疆鍔犺浇淇℃伅
 
-        Dialog loadingDialog = new Dialog(context);// 鍒涘缓鑷畾涔夋牱寮廳ialog
+        BaseDialog loadingDialog = new BaseDialog(context);// 鍒涘缓鑷畾涔夋牱寮廳ialog
         loadingDialog.setCancelable(false); // 鏄惁鍙互鎸夆�滆繑鍥為敭鈥濇秷澶�
         loadingDialog.setCanceledOnTouchOutside(false); // 鐐瑰嚮鍔犺浇妗嗕互澶栫殑鍖哄煙
         loadingDialog.setContentView(layout, new LinearLayout.LayoutParams(
@@ -50,8 +51,8 @@
         return loadingDialog;
     }
 
-    public static Dialog create(Context context, @LayoutRes int id) {
-        Dialog dialog = new Dialog(context);
+    public static BaseDialog create(Context context, @LayoutRes int id) {
+        BaseDialog dialog = new BaseDialog(context);
         dialog.setContentView(id);
         //璁剧疆dialog瀹藉害
         Window dialogWindow = dialog.getWindow();

--
Gitblit v1.9.3