mirror of
https://gitee.com/zhangsken/AndroidIDE.git
synced 2026-10-16 07:49:44 +08:00
Fix: NPE when trying to exit JLS and its not started
This commit is contained in:
Binary file not shown.
@@ -95,6 +95,7 @@ public class EditorActivity extends StudioActivity implements FileTreeFragment.F
|
||||
NavigationView.OnNavigationItemSelectedListener,
|
||||
DiagnosticClickListener,
|
||||
EditorFragment.FileOpenListener,
|
||||
EditorPagerAdapter.EditorStateListener,
|
||||
IDEHandler.Provider {
|
||||
|
||||
private ActivityEditorBinding mBinding;
|
||||
@@ -181,7 +182,8 @@ public class EditorActivity extends StudioActivity implements FileTreeFragment.F
|
||||
|
||||
symbolInput = new SymbolInputView(this);
|
||||
mBinding.inputContainer.addView(symbolInput, 0, new ViewGroup.LayoutParams(-1, -2));
|
||||
|
||||
|
||||
|
||||
mBinding.editorViewPager.setOffscreenPageLimit(9);
|
||||
mBinding.editorViewPager.setAdapter(mPagerAdapter);
|
||||
mBinding.tabs.setupWithViewPager(mBinding.editorViewPager);
|
||||
@@ -203,63 +205,7 @@ public class EditorActivity extends StudioActivity implements FileTreeFragment.F
|
||||
setupContainers();
|
||||
setupSignatureText();
|
||||
}
|
||||
|
||||
private void getProjectFromIntent() {
|
||||
this.mProject = getIntent().getParcelableExtra(EXTRA_PROJECT);
|
||||
getApp().getPrefManager().setOpenedProject(this.mProject.getProjectPath());
|
||||
}
|
||||
|
||||
private void setupSignatureText() {
|
||||
GradientDrawable gd = new GradientDrawable();
|
||||
gd.setShape(GradientDrawable.RECTANGLE);
|
||||
gd.setColor(0xff212121);
|
||||
gd.setStroke(1, 0xffffffff);
|
||||
gd.setCornerRadius(8);
|
||||
mBinding.symbolText.setBackgroundDrawable(gd);
|
||||
mBinding.symbolText.setVisibility(View.GONE);
|
||||
}
|
||||
|
||||
private void setupContainers() {
|
||||
removeFromParent(getBuildView());
|
||||
removeFromParent(getLogView());
|
||||
removeFromParent(getDiagnosticsList());
|
||||
removeFromParent(getSearchResultList());
|
||||
|
||||
mBinding.buildOutcontainer.addView(getBuildView(), new ViewGroup.LayoutParams(-1, -1));
|
||||
mBinding.buildContainer.setVisibility(View.GONE);
|
||||
mBinding.buildOutToolbar.setNavigationOnClickListener(v -> hideBuildResult());
|
||||
mBinding.buildOutToolbar.setOnClickListener(v -> hideBuildResult());
|
||||
|
||||
mBinding.logOutcontainer.addView(getLogView(), new ViewGroup.LayoutParams(-1, -1));
|
||||
mBinding.logContainer.setVisibility(View.GONE);
|
||||
mBinding.logOutToolbar.setNavigationOnClickListener(v -> hideLogResult());
|
||||
mBinding.logOutToolbar.setOnClickListener(v -> hideLogResult());
|
||||
|
||||
mBinding.diagListContainer.addView(getDiagnosticsList(), new ViewGroup.LayoutParams(-1, -1));
|
||||
mBinding.diagContainer.setVisibility(View.GONE);
|
||||
mBinding.diagToolbar.setNavigationOnClickListener(v -> hideDiagnostics());
|
||||
mBinding.diagToolbar.setOnClickListener(v -> hideDiagnostics());
|
||||
|
||||
mBinding.searchResultsListContainer.addView(getSearchResultList(), new ViewGroup.LayoutParams(-1, -1));
|
||||
mBinding.searchResultsContainer.setVisibility(View.GONE);
|
||||
mBinding.searchResultsToolbar.setNavigationOnClickListener(v -> hideSearchResults());
|
||||
mBinding.searchResultsToolbar.setOnClickListener(v -> hideSearchResults());
|
||||
|
||||
mBinding.viewOptionsCard.setVisibility(View.GONE);
|
||||
mBinding.transformScrim.setVisibility(View.GONE);
|
||||
|
||||
mBinding.transformScrim.setOnClickListener(v -> hideViewOptions());
|
||||
mBinding.viewBuildOut.setOnClickListener(v -> showBuildResult());
|
||||
mBinding.viewDiags.setOnClickListener(v -> showDiagnostics());
|
||||
mBinding.viewSearchResults.setOnClickListener(v -> showSearchResults());
|
||||
mBinding.viewLogs.setOnClickListener(v -> showLogResult());
|
||||
mBinding.viewFiles.setOnClickListener(v -> showFiles());
|
||||
mBinding.viewDaemonStatus.setOnClickListener(v -> showDaemonStatus());
|
||||
|
||||
handleDiagnosticsResultVisibility(true);
|
||||
handleSearchResultVisibility(true);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void onBackPressed() {
|
||||
if(mBinding.getRoot().isDrawerOpen(GravityCompat.END)) {
|
||||
@@ -454,6 +400,15 @@ public class EditorActivity extends StudioActivity implements FileTreeFragment.F
|
||||
public JLSHandler provideJLSHandler() {
|
||||
return mJLSHandler;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void editorStateChanged() {
|
||||
for(int i=0;i<mBinding.tabs.getTabCount();i++) {
|
||||
try {
|
||||
mBinding.tabs.getTabAt(i).setText(mPagerAdapter.getPageTitle(i));
|
||||
} catch (Throwable th) {}
|
||||
}
|
||||
}
|
||||
|
||||
public void handleSearchResults(Map<File, List<SearchResult>> results) {
|
||||
getSearchResultList().setAdapter(new com.itsaky.androidide.adapters.SearchListAdapter(results, file -> {
|
||||
@@ -711,10 +666,6 @@ public class EditorActivity extends StudioActivity implements FileTreeFragment.F
|
||||
return msg;
|
||||
}
|
||||
|
||||
/*****************************
|
||||
**** Tab Related ************
|
||||
*****************************/
|
||||
|
||||
@Override
|
||||
public void onTabSelected(TabLayout.Tab tab) {
|
||||
EditorFragment current = mPagerAdapter.getFrag(tab.getPosition());
|
||||
@@ -1045,7 +996,63 @@ public class EditorActivity extends StudioActivity implements FileTreeFragment.F
|
||||
/////////////////////////////////////////////////
|
||||
////////////// PRIVATE APIS /////////////////////
|
||||
/////////////////////////////////////////////////
|
||||
|
||||
private void getProjectFromIntent() {
|
||||
this.mProject = getIntent().getParcelableExtra(EXTRA_PROJECT);
|
||||
getApp().getPrefManager().setOpenedProject(this.mProject.getProjectPath());
|
||||
}
|
||||
|
||||
private void setupSignatureText() {
|
||||
GradientDrawable gd = new GradientDrawable();
|
||||
gd.setShape(GradientDrawable.RECTANGLE);
|
||||
gd.setColor(0xff212121);
|
||||
gd.setStroke(1, 0xffffffff);
|
||||
gd.setCornerRadius(8);
|
||||
mBinding.symbolText.setBackgroundDrawable(gd);
|
||||
mBinding.symbolText.setVisibility(View.GONE);
|
||||
}
|
||||
|
||||
private void setupContainers() {
|
||||
removeFromParent(getBuildView());
|
||||
removeFromParent(getLogView());
|
||||
removeFromParent(getDiagnosticsList());
|
||||
removeFromParent(getSearchResultList());
|
||||
|
||||
mBinding.buildOutcontainer.addView(getBuildView(), new ViewGroup.LayoutParams(-1, -1));
|
||||
mBinding.buildContainer.setVisibility(View.GONE);
|
||||
mBinding.buildOutToolbar.setNavigationOnClickListener(v -> hideBuildResult());
|
||||
mBinding.buildOutToolbar.setOnClickListener(v -> hideBuildResult());
|
||||
|
||||
mBinding.logOutcontainer.addView(getLogView(), new ViewGroup.LayoutParams(-1, -1));
|
||||
mBinding.logContainer.setVisibility(View.GONE);
|
||||
mBinding.logOutToolbar.setNavigationOnClickListener(v -> hideLogResult());
|
||||
mBinding.logOutToolbar.setOnClickListener(v -> hideLogResult());
|
||||
|
||||
mBinding.diagListContainer.addView(getDiagnosticsList(), new ViewGroup.LayoutParams(-1, -1));
|
||||
mBinding.diagContainer.setVisibility(View.GONE);
|
||||
mBinding.diagToolbar.setNavigationOnClickListener(v -> hideDiagnostics());
|
||||
mBinding.diagToolbar.setOnClickListener(v -> hideDiagnostics());
|
||||
|
||||
mBinding.searchResultsListContainer.addView(getSearchResultList(), new ViewGroup.LayoutParams(-1, -1));
|
||||
mBinding.searchResultsContainer.setVisibility(View.GONE);
|
||||
mBinding.searchResultsToolbar.setNavigationOnClickListener(v -> hideSearchResults());
|
||||
mBinding.searchResultsToolbar.setOnClickListener(v -> hideSearchResults());
|
||||
|
||||
mBinding.viewOptionsCard.setVisibility(View.GONE);
|
||||
mBinding.transformScrim.setVisibility(View.GONE);
|
||||
|
||||
mBinding.transformScrim.setOnClickListener(v -> hideViewOptions());
|
||||
mBinding.viewBuildOut.setOnClickListener(v -> showBuildResult());
|
||||
mBinding.viewDiags.setOnClickListener(v -> showDiagnostics());
|
||||
mBinding.viewSearchResults.setOnClickListener(v -> showSearchResults());
|
||||
mBinding.viewLogs.setOnClickListener(v -> showLogResult());
|
||||
mBinding.viewFiles.setOnClickListener(v -> showFiles());
|
||||
mBinding.viewDaemonStatus.setOnClickListener(v -> showDaemonStatus());
|
||||
|
||||
handleDiagnosticsResultVisibility(true);
|
||||
handleSearchResultVisibility(true);
|
||||
}
|
||||
|
||||
private MaterialContainerTransform createContainerTransformFor(View start, View end) {
|
||||
return createContainerTransformFor(start, end, mBinding.realContainer);
|
||||
}
|
||||
|
||||
@@ -19,6 +19,8 @@ public class EditorPagerAdapter extends FragmentStatePagerAdapter implements Edi
|
||||
private ArrayList<Fragment> mFragments;
|
||||
private AndroidProject project;
|
||||
|
||||
private EditorStateListener mEditorStateListener;
|
||||
|
||||
private static final Logger LOG = Logger.instance("EditorPagerAdapter");
|
||||
|
||||
public EditorPagerAdapter(FragmentManager manager, AndroidProject project) {
|
||||
@@ -37,6 +39,11 @@ public class EditorPagerAdapter extends FragmentStatePagerAdapter implements Edi
|
||||
mOpenedFiles.addAll(files);
|
||||
mFragments.addAll(fragments);
|
||||
}
|
||||
|
||||
public EditorPagerAdapter setEditorStateListener (EditorStateListener listener) {
|
||||
this.mEditorStateListener = listener;
|
||||
return this;
|
||||
}
|
||||
|
||||
public int findIndexOfEditorByFile(File file) {
|
||||
for (int i=0;i < mFragments.size();i++) {
|
||||
@@ -123,12 +130,14 @@ public class EditorPagerAdapter extends FragmentStatePagerAdapter implements Edi
|
||||
|
||||
@Override
|
||||
public void onModified(EditorFragment editor) {
|
||||
// Maybe implemented in future
|
||||
if(mEditorStateListener != null)
|
||||
mEditorStateListener.editorStateChanged();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onSaved(EditorFragment editor) {
|
||||
// Maybe implemented in future
|
||||
if(mEditorStateListener != null)
|
||||
mEditorStateListener.editorStateChanged();
|
||||
}
|
||||
|
||||
public List<File> getOpenedFiles() {
|
||||
@@ -149,4 +158,8 @@ public class EditorPagerAdapter extends FragmentStatePagerAdapter implements Edi
|
||||
public CharSequence getPageTitle(int position) {
|
||||
return getFrag(position).getTabTitle();
|
||||
}
|
||||
|
||||
public static interface EditorStateListener {
|
||||
void editorStateChanged();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -72,7 +72,8 @@ public class JLSHandler extends IDEHandler implements JLSRequestor {
|
||||
|
||||
@Override
|
||||
public void stop() {
|
||||
languageServer.exit();
|
||||
if(languageServer != null)
|
||||
languageServer.exit();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -17,7 +17,7 @@ public class ToolsManager {
|
||||
|
||||
private static PreferenceManager prefs;
|
||||
|
||||
public static final int JLS_VERSION = 7;
|
||||
public static final int JLS_VERSION = 8;
|
||||
public static final int LOGSENDER_VERSION = 1;
|
||||
public static final int CLEANER_VERSION = 1;
|
||||
public static final int GRADLE_API_VERSION = 2;
|
||||
|
||||
Reference in New Issue
Block a user