From 8259a12e1248cf688b5fda05f9e138a490a0b3c4 Mon Sep 17 00:00:00 2001
From: hyb1996 <946994919@qq.com>
Date: Tue, 18 Sep 2018 20:01:24 +0800
Subject: [PATCH] fix: invalid project cause ProjectConfigActivity and
ExplorerToolbar crash
---
.gitignore | 3 ++-
.../ui/explorer/ExplorerProjectToolbar.java | 16 ++++++++--------
.../autojs/autojs/ui/explorer/ExplorerView.java | 2 +-
.../autojs/ui/project/ProjectConfigActivity.java | 12 ++++++++++++
app/src/main/res/values/strings.xml | 1 +
5 files changed, 24 insertions(+), 10 deletions(-)
diff --git a/.gitignore b/.gitignore
index 50688619..c2d30342 100644
--- a/.gitignore
+++ b/.gitignore
@@ -11,4 +11,5 @@
/captures
.externalNativeBuild
*.apk
-*.exe
\ No newline at end of file
+*.exe
+.idea/caches/build_file_checksums.ser
diff --git a/app/src/main/java/org/autojs/autojs/ui/explorer/ExplorerProjectToolbar.java b/app/src/main/java/org/autojs/autojs/ui/explorer/ExplorerProjectToolbar.java
index 1a1650e0..2f01565e 100644
--- a/app/src/main/java/org/autojs/autojs/ui/explorer/ExplorerProjectToolbar.java
+++ b/app/src/main/java/org/autojs/autojs/ui/explorer/ExplorerProjectToolbar.java
@@ -4,9 +4,6 @@ import android.content.Context;
import android.support.annotation.Nullable;
import android.support.v7.widget.CardView;
import android.util.AttributeSet;
-import android.view.View;
-import android.widget.FrameLayout;
-import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.Toast;
@@ -14,7 +11,6 @@ import com.stardust.autojs.project.ProjectConfig;
import com.stardust.autojs.project.ProjectLauncher;
import com.stardust.pio.PFile;
-import org.androidannotations.annotations.Click;
import org.autojs.autojs.R;
import org.autojs.autojs.autojs.AutoJs;
import org.autojs.autojs.model.explorer.ExplorerChangeEvent;
@@ -59,15 +55,19 @@ public class ExplorerProjectToolbar extends CardView {
setOnClickListener(view -> edit());
}
- public void setProject(PFile dir, ProjectConfig config) {
+ public void setProject(PFile dir) {
+ mProjectConfig = ProjectConfig.fromProjectDir(dir.getPath());
+ if(mProjectConfig == null){
+ setVisibility(GONE);
+ return;
+ }
mDirectory = dir;
- mProjectConfig = config;
- mProjectName.setText(config.getName());
+ mProjectName.setText(mProjectConfig.getName());
}
public void refresh() {
if (mDirectory != null) {
- setProject(mDirectory, ProjectConfig.fromProjectDir(mDirectory.getPath()));
+ setProject(mDirectory);
}
}
diff --git a/app/src/main/java/org/autojs/autojs/ui/explorer/ExplorerView.java b/app/src/main/java/org/autojs/autojs/ui/explorer/ExplorerView.java
index f4956775..e250921c 100644
--- a/app/src/main/java/org/autojs/autojs/ui/explorer/ExplorerView.java
+++ b/app/src/main/java/org/autojs/autojs/ui/explorer/ExplorerView.java
@@ -111,7 +111,7 @@ public class ExplorerView extends ThemeColorSwipeRefreshLayout implements SwipeR
mCurrentPageState = currentPageState;
if (mCurrentPageState.page instanceof ExplorerProjectPage) {
mProjectToolbar.setVisibility(VISIBLE);
- mProjectToolbar.setProject(currentPageState.page.toScriptFile(), ((ExplorerProjectPage) currentPageState.page).getProjectConfig());
+ mProjectToolbar.setProject(currentPageState.page.toScriptFile());
} else {
mProjectToolbar.setVisibility(GONE);
}
diff --git a/app/src/main/java/org/autojs/autojs/ui/project/ProjectConfigActivity.java b/app/src/main/java/org/autojs/autojs/ui/project/ProjectConfigActivity.java
index 6351663b..3950d0f6 100644
--- a/app/src/main/java/org/autojs/autojs/ui/project/ProjectConfigActivity.java
+++ b/app/src/main/java/org/autojs/autojs/ui/project/ProjectConfigActivity.java
@@ -12,6 +12,7 @@ import android.widget.ImageView;
import android.widget.Toast;
import com.stardust.autojs.project.ProjectConfig;
+import com.stardust.autojs.runtime.api.Dialogs;
import com.stardust.pio.PFiles;
import org.androidannotations.annotations.AfterViews;
@@ -24,6 +25,7 @@ import org.autojs.autojs.model.explorer.ExplorerFileItem;
import org.autojs.autojs.model.explorer.ExplorerItem;
import org.autojs.autojs.model.explorer.Explorers;
import org.autojs.autojs.model.project.ProjectTemplate;
+import org.autojs.autojs.theme.dialog.ThemeColorMaterialDialogBuilder;
import org.autojs.autojs.ui.BaseActivity;
import org.autojs.autojs.ui.widget.SimpleTextWatcher;
@@ -89,11 +91,21 @@ public class ProjectConfigActivity extends BaseActivity {
}
mDirectory = new File(dir);
mProjectConfig = ProjectConfig.fromProjectDir(dir);
+ if (mProjectConfig == null) {
+ new ThemeColorMaterialDialogBuilder(this)
+ .title(R.string.text_invalid_project)
+ .positiveText(R.string.ok)
+ .dismissListener(dialogInterface -> finish())
+ .show();
+ }
}
}
@AfterViews
void setupViews() {
+ if (mProjectConfig == null) {
+ return;
+ }
setToolbarAsBack(mNewProject ? getString(R.string.text_new_project) : mProjectConfig.getName());
if (mNewProject) {
mAppName.addTextChangedListener(new SimpleTextWatcher(s ->
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index b06d2b6a..4e89bd90 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -397,4 +397,5 @@
项目位置
新建项目
js文件
+ 无效项目