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文件 + 无效项目