Переглянути джерело

1.修改Android Apex Drivers弱引用导致空指针崩溃。

Pen Li 7 роки тому
батько
коміт
6cca65e05d

+ 4 - 0
ApexDrivers/apexdriverslib/src/main/java/com/usai/redant/apexdrivers/detail/DetailActivity.java

@@ -450,6 +450,10 @@ public class DetailActivity extends BasicActivity implements DetailAdapter.Detai
     @Override
     public void performAction(final View view, final DetailSubActionModel actionModel) {
 
+        if (actionModel == null) {
+            return;
+        }
+
         if (actionModel.alert) {
 
             new AlertDialog.Builder(mCtx)

+ 61 - 19
ApexDrivers/apexdriverslib/src/main/java/com/usai/redant/apexdrivers/detail/DetailAdapter.java

@@ -464,8 +464,13 @@ public class DetailAdapter extends BaseExpandableListAdapter {
                     btn.setOnClickListener(new View.OnClickListener() {
                         @Override
                         public void onClick(View v) {
-                            if (mDelegate != null && mDelegate.get() != null) {
-                                mDelegate.get().performAction(v,subActionModel);
+                            if (mDelegate != null) {
+
+                                DetailActionDelegate delegate = mDelegate.get();
+                                if (delegate != null) {
+                                    delegate.performAction(v,subActionModel);
+                                }
+
                             }
                         }
                     });
@@ -499,9 +504,11 @@ public class DetailAdapter extends BaseExpandableListAdapter {
                 @Override
                 public void onClick(View v) {
                     if (mWeakLocation != null && mDelegate != null) {
-                        if (mWeakLocation.get() != null && mDelegate.get() != null) {
-                            DetailLocationModel model = mWeakLocation.get();
-                            mDelegate.get().navigationTo(model);
+
+                        DetailLocationModel model = mWeakLocation.get();
+                        DetailActionDelegate delegate = mDelegate.get();
+                        if (delegate != null && model != null) {
+                            delegate.navigationTo(model);
                         }
                     }
                 }
@@ -608,8 +615,14 @@ public class DetailAdapter extends BaseExpandableListAdapter {
                 @Override
                 public void onClick(View v) {
 
-                    if (mDelegate != null && mDelegate.get() != null) {
-                        mDelegate.get().showMap(weakMap.get());
+                    if (mDelegate != null && weakMap != null) {
+
+                        DetailActionDelegate delegate = mDelegate.get();
+                        DetailMapModel mapModel = weakMap.get();
+                        if (delegate != null && mapModel != null) {
+                            delegate.showMap(mapModel);
+                        }
+
                     }
                 }
             });
@@ -659,8 +672,12 @@ public class DetailAdapter extends BaseExpandableListAdapter {
 //        }
 
         public void bindModel(DetailMapModel model) {
-            if (weakMap != null && weakMap.get() != null) {
-                weakMap.get().setDelegate(null);
+            if (weakMap != null) {
+
+                DetailMapModel detailMapModel = weakMap.get();
+                if (detailMapModel != null) {
+                    detailMapModel.setDelegate(null);
+                }
             }
             if (model != null) {
                 weakMap = new WeakReference<>(model);
@@ -760,9 +777,14 @@ public class DetailAdapter extends BaseExpandableListAdapter {
                 @Override
                 public void onClick(View v) {
 
-                    if (weakPhoto != null && weakPhoto.get() != null) {
-                        String path = weakPhoto.get().getPhotoPath(mCtx);
-                        clickImage(path);
+                    if (weakPhoto != null) {
+
+                        DetailPhotoModel detailPhotoModel = weakPhoto.get();
+
+                        if (detailPhotoModel != null) {
+                            String path = detailPhotoModel.getPhotoPath(mCtx);
+                            clickImage(path);
+                        }
                     }
 
                 }
@@ -772,8 +794,14 @@ public class DetailAdapter extends BaseExpandableListAdapter {
         }
 
         public void bindModel(DetailPhotoModel model) {
-            if (weakPhoto != null && weakPhoto.get() != null) {
-                weakPhoto.get().setDelegate(null);
+            if (weakPhoto != null) {
+
+                DetailPhotoModel detailPhotoModel = weakPhoto.get();
+                if (detailPhotoModel != null) {
+                    detailPhotoModel.setDelegate(null);
+                }
+
+
             }
             if (model != null) {
                 weakPhoto = new WeakReference<>(model);
@@ -810,9 +838,17 @@ public class DetailAdapter extends BaseExpandableListAdapter {
                 @Override
                 public void onClick(View v) {
 
-                    if (weakSignature != null && weakSignature.get() != null) {
-                        String path = weakSignature.get().getSignaturePath(mCtx);
-                        clickImage(path);
+                    if (weakSignature != null) {
+
+                        DetailSignatureModel signatureModel = weakSignature.get();
+
+                        if (signatureModel != null) {
+
+                            String path = signatureModel.getSignaturePath(mCtx);
+                            clickImage(path);
+                        }
+
+
                     }
                 }
             });
@@ -821,8 +857,14 @@ public class DetailAdapter extends BaseExpandableListAdapter {
         }
 
         public void bindModel(DetailSignatureModel model) {
-            if (weakSignature != null && weakSignature.get() != null) {
-                weakSignature.get().setDelegate(null);
+            if (weakSignature != null) {
+
+                DetailSignatureModel signatureModel = weakSignature.get();
+                if (signatureModel != null) {
+                    signatureModel.setDelegate(null);
+                }
+
+
             }
             if (model != null) {
                 weakSignature = new WeakReference<>(model);

+ 7 - 2
ApexDrivers/apexdriverslib/src/main/java/com/usai/redant/apexdrivers/home/HomeCellLayout.java

@@ -80,9 +80,14 @@ public class HomeCellLayout extends RelativeLayout implements HomeOrderModel.Ord
             init();
         }
 
-        if (weakModel != null && weakModel.get() != null) {
+        if (weakModel != null) {
             try {
-                weakModel.get().delegate = null; // 会有null的情况
+
+                HomeOrderModel homeOrderModel = weakModel.get();
+                if (homeOrderModel != null) {
+                    homeOrderModel.delegate = null;// 会有null的情况
+                }
+
             } catch (Exception e) {
                 e.printStackTrace();
             }

+ 15 - 4
ApexDrivers/apexdriverslib/src/main/java/com/usai/redant/apexdrivers/home/HomeFragment.java

@@ -618,8 +618,13 @@ public class HomeFragment extends Fragment implements HomeHeaderView.HomeHeaderD
             }
 
             void bindSectionModel(HomeSectionModel model) {
-                if (weakSectionModel != null && weakSectionModel.get() != null) {
-                    weakSectionModel.get().listener = null;
+                if (weakSectionModel != null) {
+
+                    HomeSectionModel homeSectionModel = weakSectionModel.get();
+                    if (homeSectionModel != null) {
+                        homeSectionModel.listener = null;
+                    }
+
                 }
                 if (model == null) {
                     weakSectionModel = null;
@@ -678,8 +683,14 @@ public class HomeFragment extends Fragment implements HomeHeaderView.HomeHeaderD
 
             void bindOrderModel(HomeOrderModel model) {
 
-                if (weakCell != null && weakCell.get() != null) {
-                    weakCell.get().bindOrderModel(model);
+                if (weakCell != null) {
+
+                    HomeCellLayout cellLayout = weakCell.get();
+                    if (cellLayout != null) {
+                       cellLayout.bindOrderModel(model);
+                    }
+
+
                 }
             }
 

+ 7 - 2
ApexDrivers/apexdriverslib/src/main/java/com/usai/redant/apexdrivers/home/HomeMoreActivity.java

@@ -646,8 +646,13 @@ public class HomeMoreActivity extends BasicActivity implements AbsListView.OnScr
 
             void bindOrderModel(HomeOrderModel model) {
 
-                if (weakCell != null && weakCell.get() != null) {
-                    weakCell.get().bindOrderModel(model);
+                if (weakCell != null) {
+
+                    HomeCellLayout homeCellLayout = weakCell.get();
+                    if (homeCellLayout != null) {
+                        homeCellLayout.bindOrderModel(model);
+                    }
+
                 }
             }
 

+ 130 - 39
ApexDrivers/apexdriverslib/src/main/java/com/usai/redant/apexdrivers/update/UpdateAdapter.java

@@ -451,9 +451,16 @@ public class UpdateAdapter extends BaseExpandableListAdapter {
             scannerBtn.setOnClickListener(new View.OnClickListener() {
                 @Override
                 public void onClick(View v) {
-                    if (weakInput != null && weakInput.get() != null && mDelegate != null && mDelegate.get() != null) {
-                        UpdateInputModel model = weakInput.get();
-                        mDelegate.get().scannerButtonDidClick(model);
+                    if (weakInput != null && mDelegate != null) {
+
+                        UpdateInputModel inputModel = weakInput.get();
+                        UpdateAdapterDelegate adapterDelegate = mDelegate.get();
+
+                        if (inputModel != null && adapterDelegate != null) {
+                            adapterDelegate.scannerButtonDidClick(inputModel);
+                        }
+
+
                     }
                 }
             });
@@ -466,8 +473,13 @@ public class UpdateAdapter extends BaseExpandableListAdapter {
         public void bindModel(UpdateInputModel model) {
 
             // 释放旧的
-            if (weakInput != null && weakInput.get() != null) {
-                weakInput.get().setDelegate(null);
+            if (weakInput != null) {
+
+                UpdateInputModel inputModel = weakInput.get();
+                if (inputModel != null) {
+                    inputModel.setDelegate(null);
+                }
+
             }
 
             if (model != null) {
@@ -484,15 +496,29 @@ public class UpdateAdapter extends BaseExpandableListAdapter {
         @Override
         public void refresh() {
 
-            if (weakInput != null && weakInput.get() != null) {
-                titleTv.setText(weakInput.get().title);
-                valueEt.setText(weakInput.get().value);
-                if (weakInput.get().scannable) {
-                    scannerBtn.setVisibility(View.VISIBLE);
+            if (weakInput != null) {
+
+                UpdateInputModel inputModel = weakInput.get();
+
+                if (inputModel != null) {
+
+                    titleTv.setText(inputModel.title);
+                    valueEt.setText(inputModel.value);
+                    if (inputModel.scannable) {
+                        scannerBtn.setVisibility(View.VISIBLE);
+                    } else {
+                        scannerBtn.setVisibility(View.GONE);
+                    }
+                    requiredTv.setVisibility(inputModel.required ? View.VISIBLE : View.GONE);
+
                 } else {
-                    scannerBtn.setVisibility(View.GONE);
+
+                    titleTv.setText(null);
+                    valueEt.setText(null);
+                    scannerBtn.setVisibility(View.VISIBLE);
+                    requiredTv.setVisibility(View.GONE);
                 }
-                requiredTv.setVisibility(weakInput.get().required ? View.VISIBLE : View.GONE);
+
             } else {
                 titleTv.setText(null);
                 valueEt.setText(null);
@@ -529,8 +555,13 @@ public class UpdateAdapter extends BaseExpandableListAdapter {
         public void bindModel(UpdateMultInputModel model) {
 
             // 释放旧的
-            if (weakInput != null && weakInput.get() != null) {
-                weakInput.get().setDelegate(null);
+            if (weakInput != null) {
+
+                UpdateMultInputModel inputModel = weakInput.get();
+
+                if (inputModel != null) {
+                   inputModel.setDelegate(null);
+                }
             }
 
             if (model != null) {
@@ -547,10 +578,21 @@ public class UpdateAdapter extends BaseExpandableListAdapter {
         @Override
         public void refresh() {
 
-            if (weakInput != null && weakInput.get() != null) {
-                titleTv.setText(weakInput.get().title);
-                valueEt.setText(weakInput.get().value);
-                requiredTv.setVisibility(weakInput.get().required ? View.VISIBLE : View.GONE);
+            if (weakInput != null) {
+
+                UpdateMultInputModel inputModel = weakInput.get();
+
+                if (inputModel != null) {
+
+                    titleTv.setText(inputModel.title);
+                    valueEt.setText(inputModel.value);
+                    requiredTv.setVisibility(inputModel.required ? View.VISIBLE : View.GONE);
+                } else {
+                    titleTv.setText(null);
+                    valueEt.setText(null);
+                    requiredTv.setVisibility(View.GONE);
+                }
+
             } else {
                 titleTv.setText(null);
                 valueEt.setText(null);
@@ -593,9 +635,13 @@ public class UpdateAdapter extends BaseExpandableListAdapter {
             photoBtn.setOnClickListener(new View.OnClickListener() {
                 @Override
                 public void onClick(View v) {
-                    if (weakPhoto != null && weakPhoto.get() != null && mDelegate != null && mDelegate.get() != null) {
+                    if (weakPhoto != null && mDelegate != null) {
+
+                        UpdateAdapterDelegate adapterDelegate = mDelegate.get();
                         UpdatePhotoModel model = weakPhoto.get();
-                        mDelegate.get().photoButtonDidClick(model);
+                        if (adapterDelegate != null && model != null) {
+                            adapterDelegate.photoButtonDidClick(model);
+                        }
                     }
                 }
             });
@@ -604,8 +650,13 @@ public class UpdateAdapter extends BaseExpandableListAdapter {
 
         public void bindModel(UpdatePhotoModel model) {
 
-            if (weakPhoto != null && weakPhoto.get() != null) {
-                weakPhoto.get().setDelegate(null);
+            if (weakPhoto != null) {
+
+                UpdatePhotoModel photoModel = weakPhoto.get();
+                if (photoModel != null) {
+                    photoModel.setDelegate(null);
+                }
+
             }
 
             if (model != null) {
@@ -621,10 +672,21 @@ public class UpdateAdapter extends BaseExpandableListAdapter {
         @Override
         public void refresh() {
 
-            if (weakPhoto != null && weakPhoto.get() != null) {
-                titleTv.setText(weakPhoto.get().title);
-                photoBtn.setImageBitmap(weakPhoto.get().getPhoto());
-                requiredTv.setVisibility(weakPhoto.get().required ? View.VISIBLE : View.GONE);
+            if (weakPhoto != null) {
+
+                UpdatePhotoModel photoModel = weakPhoto.get();
+
+                if (photoModel != null) {
+                    titleTv.setText(photoModel.title);
+                    photoBtn.setImageBitmap(photoModel.getPhoto());
+                    requiredTv.setVisibility(photoModel.required ? View.VISIBLE : View.GONE);
+                } else {
+                    titleTv.setText(null);
+                    photoBtn.setImageBitmap(null);
+                    requiredTv.setVisibility(View.GONE);
+                }
+
+
             } else {
                 titleTv.setText(null);
                 photoBtn.setImageBitmap(null);
@@ -654,9 +716,13 @@ public class UpdateAdapter extends BaseExpandableListAdapter {
                 @Override
                 public void onClick(View v) {
 
-                    if (weakSignature != null && weakSignature.get() != null && mDelegate != null && mDelegate.get() != null) {
+                    if (weakSignature != null && mDelegate != null) {
+
+                        UpdateAdapterDelegate adapterDelegate = mDelegate.get();
                         UpdateSignatureModel model = weakSignature.get();
-                        mDelegate.get().signatureClick(model);
+                        if (adapterDelegate != null && model != null) {
+                            adapterDelegate.signatureClick(model);
+                        }
                     }
                 }
             });
@@ -665,8 +731,12 @@ public class UpdateAdapter extends BaseExpandableListAdapter {
 
         public void bindModel(UpdateSignatureModel model) {
 
-            if (weakSignature != null && weakSignature.get() != null) {
-                weakSignature.get().setDelegate(null);
+            if (weakSignature != null) {
+
+                UpdateSignatureModel signatureModel = weakSignature.get();
+                if (signatureModel != null) {
+                    signatureModel.setDelegate(null);
+                }
             }
 
             if (model != null) {
@@ -683,10 +753,22 @@ public class UpdateAdapter extends BaseExpandableListAdapter {
         @Override
         public void refresh() {
 
-            if (weakSignature != null && weakSignature.get() != null) {
-                titleTv.setText(weakSignature.get().title);
-                signatureView.setImageBitmap(weakSignature.get().getImage());
-                requiredTv.setVisibility(weakSignature.get().required ? View.VISIBLE : View.GONE);
+            if (weakSignature != null) {
+
+                UpdateSignatureModel signatureModel = weakSignature.get();
+                if (signatureModel != null) {
+
+                    titleTv.setText(signatureModel.title);
+                    signatureView.setImageBitmap(signatureModel.getImage());
+                    requiredTv.setVisibility(signatureModel.required ? View.VISIBLE : View.GONE);
+
+                } else {
+
+                    titleTv.setText(null);
+                    signatureView.setImageBitmap(null);
+                    requiredTv.setVisibility(View.GONE);
+                }
+
             } else {
                 titleTv.setText(null);
                 signatureView.setImageBitmap(null);
@@ -716,9 +798,13 @@ public class UpdateAdapter extends BaseExpandableListAdapter {
             dateBtn.setOnClickListener(new View.OnClickListener() {
                 @Override
                 public void onClick(View v) {
-                    if (weakDate != null && weakDate.get() != null && mDelegate != null) {
-                        if (weakDate.get().editable) {
-                            mDelegate.get().dateClick(weakDate.get());
+                    if (weakDate != null && mDelegate != null) {
+
+                        UpdateDateModel dateModel = weakDate.get();
+                        UpdateAdapterDelegate adapterDelegate = mDelegate.get();
+
+                        if (adapterDelegate != null && dateModel != null && dateModel.editable) {
+                            adapterDelegate.dateClick(dateModel);
                         }
                     }
                 }
@@ -729,8 +815,13 @@ public class UpdateAdapter extends BaseExpandableListAdapter {
 
         public void bindModel(UpdateDateModel model) {
 
-            if (weakDate != null && weakDate.get() != null) {
-                weakDate.get().setDelegate(null);
+            if (weakDate != null) {
+
+                UpdateDateModel dateModel = weakDate.get();
+                if (dateModel != null) {
+                    dateModel.setDelegate(null);
+                }
+
             }
 
             if (model != null) {

+ 7 - 2
ApexDrivers/apexdriverslib/src/main/java/com/usai/redant/apexdrivers/update/model/UpdateBaseModel.java

@@ -40,8 +40,13 @@ public class UpdateBaseModel extends BasicObject {
     public WeakReference<UpdateModelDelegate> weakDelegate;
     public void setDelegate(UpdateModelDelegate delegate) {
 
-        if (weakDelegate != null && weakDelegate.get() != null) {
-            weakDelegate.get().unbind();
+        if (weakDelegate != null) {
+
+            UpdateModelDelegate delegate1 = weakDelegate.get();
+            if (delegate1 != null) {
+                delegate1.unbind();
+            }
+
         }
 
         if (delegate == null) {

+ 7 - 2
ApexDrivers/apexdriverslib/src/main/java/com/usai/redant/apexdrivers/update/model/UpdateDateModel.java

@@ -51,8 +51,13 @@ public class UpdateDateModel extends UpdateBaseModel {
     public void setDisplay(String display) {
         this.display = display;
 
-        if (weakDelegate != null && weakDelegate.get() != null) {
-            weakDelegate.get().refresh();
+        if (weakDelegate != null) {
+
+            UpdateModelDelegate delegate = weakDelegate.get();
+
+            if (delegate != null) {
+                delegate.refresh();
+            }
         }
     }
 

+ 7 - 2
ApexDrivers/apexdriverslib/src/main/java/com/usai/redant/apexdrivers/update/model/UpdateSignatureModel.java

@@ -16,8 +16,13 @@ public class UpdateSignatureModel extends UpdateImageBaseModel {
     public void setSignature(Bitmap signature) {
         this.signature = signature;
 
-        if (weakDelegate != null && weakDelegate.get() != null) {
-            weakDelegate.get().refresh();
+        if (weakDelegate != null) {
+
+            UpdateModelDelegate delegate = weakDelegate.get();
+
+            if (delegate != null) {
+                delegate.refresh();
+            }
         }
     }