diff --git a/.idea/assetWizardSettings.xml b/.idea/assetWizardSettings.xml
index 60a072d..3676718 100644
--- a/.idea/assetWizardSettings.xml
+++ b/.idea/assetWizardSettings.xml
@@ -14,8 +14,8 @@
diff --git a/.idea/misc.xml b/.idea/misc.xml
index 6e2cee0..9f31c26 100644
--- a/.idea/misc.xml
+++ b/.idea/misc.xml
@@ -17,6 +17,7 @@
+
diff --git a/app/release.md b/app/release.md
index a34656e..66a6e70 100644
--- a/app/release.md
+++ b/app/release.md
@@ -1,3 +1,3 @@
-* 1、新增分组管理界面(支持添加、重命名、删除、排序分组)
-* 2、发现界面书籍添加动画效果
-* 3、修复v2.1.7版本更新中推送debug版本的问题
\ No newline at end of file
+* 1、修复从书籍详情页进入阅读后切换日夜模式闪退的bug
+* 2、修复从发现页进入阅读后切换日夜模式闪退的bug
+* 3、详情页作者支持点击搜索
\ No newline at end of file
diff --git a/app/src/main/assets/updatelog.fy b/app/src/main/assets/updatelog.fy
index 268a162..45da7a4 100644
--- a/app/src/main/assets/updatelog.fy
+++ b/app/src/main/assets/updatelog.fy
@@ -1,3 +1,9 @@
+风月读书v2.2.0
+更新内容:
+1、修复从书籍详情页进入阅读后切换日夜模式闪退的bug
+2、修复从发现页进入阅读后切换日夜模式闪退的bug
+3、详情页作者支持点击搜索
+
2021.08.31
风月读书v2.1.9
更新内容:
diff --git a/app/src/main/java/xyz/fycz/myreader/base/BaseActivity.java b/app/src/main/java/xyz/fycz/myreader/base/BaseActivity.java
index 34def62..e98cc99 100644
--- a/app/src/main/java/xyz/fycz/myreader/base/BaseActivity.java
+++ b/app/src/main/java/xyz/fycz/myreader/base/BaseActivity.java
@@ -35,6 +35,8 @@ import xyz.fycz.myreader.util.StatusBarUtil;
public abstract class BaseActivity extends SwipeBackActivity {
private static final int INVALID_VAL = -1;
+ protected static final String INTENT = "intent";
+
protected CompositeDisposable mDisposable;
protected Toolbar mToolbar;
@@ -119,6 +121,7 @@ public abstract class BaseActivity extends SwipeBackActivity {
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
+ initIntent(savedInstanceState);
initTheme();
ActivityManage.addActivity(this);
bindView();
@@ -130,6 +133,15 @@ public abstract class BaseActivity extends SwipeBackActivity {
processLogic();
}
+ private void initIntent(Bundle savedInstanceState) {
+ if (savedInstanceState != null) {
+ Intent intent = savedInstanceState.getParcelable(INTENT);
+ if (intent != null) {
+ setIntent(intent);
+ }
+ }
+ }
+
private void initToolbar() {
//更严谨是通过反射判断是否存在Toolbar
mToolbar = (Toolbar) findViewById(R.id.toolbar);
diff --git a/app/src/main/java/xyz/fycz/myreader/common/APPCONST.java b/app/src/main/java/xyz/fycz/myreader/common/APPCONST.java
index d9cf936..67b827d 100644
--- a/app/src/main/java/xyz/fycz/myreader/common/APPCONST.java
+++ b/app/src/main/java/xyz/fycz/myreader/common/APPCONST.java
@@ -64,6 +64,7 @@ public class APPCONST {
public static final String RESULT_LAST_READ_POSITION = "result_last_read_position";
public static final String RESULT_HISTORY_CHAPTER = "result_history_chapter";
public static final String RESULT_UP_MENU = "result_up_menu";
+ public static final String SEARCH_KEY = "searchKey";
public static final String[] READ_STYLE_NIGHT = {"#94928c", "#393431"};//黑夜
diff --git a/app/src/main/java/xyz/fycz/myreader/ui/activity/BookDetailedActivity.java b/app/src/main/java/xyz/fycz/myreader/ui/activity/BookDetailedActivity.java
index 96e23d3..b791aa7 100644
--- a/app/src/main/java/xyz/fycz/myreader/ui/activity/BookDetailedActivity.java
+++ b/app/src/main/java/xyz/fycz/myreader/ui/activity/BookDetailedActivity.java
@@ -12,6 +12,8 @@ import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
import androidx.appcompat.widget.Toolbar;
import androidx.recyclerview.widget.LinearLayoutManager;
@@ -117,6 +119,22 @@ public class BookDetailedActivity extends BaseActivity {
setContentView(binding.getRoot());
}
+ @Override
+ protected void onSaveInstanceState(@NonNull Bundle outState) {
+ aBooks = mSourceDialog.getaBooks();
+ Intent intent = new Intent();
+ if (aBooks != null) {
+ aBooks.set(mSourceDialog.getSourceIndex(), mBook);
+ BitIntentDataManager.getInstance().putData(intent, aBooks);
+ intent.putExtra(APPCONST.SOURCE_INDEX, mSourceDialog.getSourceIndex());
+ } else {
+ BitIntentDataManager.getInstance().putData(intent, mBook);
+ }
+ intent.putExtra("isCollected", isCollected);
+ outState.putParcelable(INTENT, intent);
+ super.onSaveInstanceState(outState);
+ }
+
@Override
protected void onDestroy() {
if (chaptersDis != null) chaptersDis.dispose();
@@ -226,12 +244,16 @@ public class BookDetailedActivity extends BaseActivity {
}
mSourceDialog.setABooks(aBooks);
mSourceDialog.setSourceIndex(sourceIndex);
-
}
@Override
protected void initClick() {
super.initClick();
+ binding.ih.bookDetailTvAuthor.setOnClickListener(v -> {
+ Intent intent = new Intent(BookDetailedActivity.this, SearchBookActivity.class);
+ intent.putExtra(APPCONST.SEARCH_KEY, binding.ih.bookDetailTvAuthor.getText());
+ startActivity(intent);
+ });
binding.ic.bookDetailTvDesc.setOnClickListener(v -> showMoreDesc());
binding.ic.bookDetailTvCatalogMore.setOnClickListener(v -> goToMoreChapter());
binding.ib.flAddBookcase.setOnClickListener(view -> {
diff --git a/app/src/main/java/xyz/fycz/myreader/ui/activity/FindBookActivity.java b/app/src/main/java/xyz/fycz/myreader/ui/activity/FindBookActivity.java
index 5748fd3..c2fb91a 100644
--- a/app/src/main/java/xyz/fycz/myreader/ui/activity/FindBookActivity.java
+++ b/app/src/main/java/xyz/fycz/myreader/ui/activity/FindBookActivity.java
@@ -1,10 +1,13 @@
package xyz.fycz.myreader.ui.activity;
+import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
import androidx.appcompat.widget.Toolbar;
import org.jetbrains.annotations.NotNull;
@@ -42,6 +45,15 @@ public class FindBookActivity extends BaseActivity {
setContentView(binding.getRoot());
}
+
+ @Override
+ protected void onSaveInstanceState(@NonNull Bundle outState) {
+ Intent intent = new Intent();
+ BitIntentDataManager.getInstance().putData(intent, findCrawler);
+ outState.putParcelable(INTENT, intent);
+ super.onSaveInstanceState(outState);
+ }
+
@Override
protected void initData(Bundle savedInstanceState) {
super.initData(savedInstanceState);
diff --git a/app/src/main/java/xyz/fycz/myreader/ui/activity/ReadActivity.java b/app/src/main/java/xyz/fycz/myreader/ui/activity/ReadActivity.java
index 2a6db72..7649d56 100644
--- a/app/src/main/java/xyz/fycz/myreader/ui/activity/ReadActivity.java
+++ b/app/src/main/java/xyz/fycz/myreader/ui/activity/ReadActivity.java
@@ -224,18 +224,6 @@ public class ReadActivity extends BaseActivity implements ColorPickerDialogListe
/**************************override***********************************/
- @Override
- protected void onCreate(@Nullable Bundle savedInstanceState) {
- if (savedInstanceState != null) {
- pagePos = savedInstanceState.getInt("pagePos");
- chapterPos = savedInstanceState.getInt("chapterPos");
- } else {
- pagePos = -1;
- chapterPos = -1;
- }
- super.onCreate(savedInstanceState);
- }
-
@Override
protected void onStop() {
recordReadTime();
@@ -256,11 +244,18 @@ public class ReadActivity extends BaseActivity implements ColorPickerDialogListe
@Override
protected void onSaveInstanceState(@NonNull Bundle outState) {
- super.onSaveInstanceState(outState);
- if (mBook != null) {
- outState.putInt("pagePos", mBook.getLastReadPosition());
- outState.putInt("chapterPos", mBook.getHisttoryChapterNum());
+ aBooks = mSourceDialog.getaBooks();
+ Intent intent = new Intent();
+ if (aBooks != null) {
+ aBooks.set(mSourceDialog.getSourceIndex(), mBook);
+ BitIntentDataManager.getInstance().putData(intent, aBooks);
+ intent.putExtra(APPCONST.SOURCE_INDEX, mSourceDialog.getSourceIndex());
+ } else {
+ BitIntentDataManager.getInstance().putData(intent, mBook);
}
+ intent.putExtra("isCollected", isCollected);
+ outState.putParcelable(INTENT, intent);
+ super.onSaveInstanceState(outState);
}
@Override
diff --git a/app/src/main/java/xyz/fycz/myreader/ui/activity/SearchBookActivity.java b/app/src/main/java/xyz/fycz/myreader/ui/activity/SearchBookActivity.java
index c78f3a9..3620e18 100644
--- a/app/src/main/java/xyz/fycz/myreader/ui/activity/SearchBookActivity.java
+++ b/app/src/main/java/xyz/fycz/myreader/ui/activity/SearchBookActivity.java
@@ -271,6 +271,15 @@ public class SearchBookActivity extends BaseActivity {
});
}
+ @Override
+ protected void processLogic() {
+ String searchKey = getIntent().getStringExtra(APPCONST.SEARCH_KEY);
+ if (searchKey != null) {
+ binding.etSearchKey.setText(searchKey);
+ binding.etSearchKey.setSelection(searchKey.length());
+ search();
+ }
+ }
@Override
public boolean onCreateOptionsMenu(Menu menu) {
diff --git a/app/src/main/java/xyz/fycz/myreader/ui/adapter/holder/SourceExchangeHolder.java b/app/src/main/java/xyz/fycz/myreader/ui/adapter/holder/SourceExchangeHolder.java
index 8f0b8d4..f99fa15 100644
--- a/app/src/main/java/xyz/fycz/myreader/ui/adapter/holder/SourceExchangeHolder.java
+++ b/app/src/main/java/xyz/fycz/myreader/ui/adapter/holder/SourceExchangeHolder.java
@@ -42,9 +42,11 @@ public class SourceExchangeHolder extends ViewHolderImpl {
public void onBind(RecyclerView.ViewHolder holder, Book data, int pos) {
sourceTvTitle.setText(BookSourceManager.getSourceNameByStr(data.getSource()));
sourceTvChapter.setText(data.getNewestChapterTitle());
- if (data.getSource() != null && data.getSource().equals(dialog.getmShelfBook().getSource()))
+ if (data.getSource() != null && data.getSource().equals(dialog.getmShelfBook().getSource())) {
sourceIv.setVisibility(View.VISIBLE);
- else
+ dialog.setSourceIndex(pos);
+ } else {
sourceIv.setVisibility(View.GONE);
+ }
}
}
diff --git a/app/src/main/java/xyz/fycz/myreader/ui/dialog/SourceExchangeDialog.java b/app/src/main/java/xyz/fycz/myreader/ui/dialog/SourceExchangeDialog.java
index 910a641..14fe5f5 100644
--- a/app/src/main/java/xyz/fycz/myreader/ui/dialog/SourceExchangeDialog.java
+++ b/app/src/main/java/xyz/fycz/myreader/ui/dialog/SourceExchangeDialog.java
@@ -71,7 +71,16 @@ public class SourceExchangeDialog extends Dialog {
this.sourceIndex = sourceIndex;
}
public int getSourceIndex() {
- return sourceIndex;
+ if (sourceIndex == -1){
+ for (int i = 0; i < aBooks.size(); i++) {
+ Book book = aBooks.get(i);
+ if (book.getSource().equals(mShelfBook.getSource())) {
+ sourceIndex = i;
+ break;
+ }
+ }
+ }
+ return sourceIndex == -1 ? 0 : sourceIndex;
}
public void setOnSourceChangeListener(OnSourceChangeListener listener) {
this.listener = listener;
diff --git a/app/src/main/java/xyz/fycz/myreader/ui/fragment/FindBook1Fragment.java b/app/src/main/java/xyz/fycz/myreader/ui/fragment/FindBook1Fragment.java
index 896d64b..f22b2f5 100644
--- a/app/src/main/java/xyz/fycz/myreader/ui/fragment/FindBook1Fragment.java
+++ b/app/src/main/java/xyz/fycz/myreader/ui/fragment/FindBook1Fragment.java
@@ -18,10 +18,13 @@ import java.util.ArrayList;
import java.util.List;
import xyz.fycz.myreader.base.BaseFragment;
+import xyz.fycz.myreader.base.BitIntentDataManager;
import xyz.fycz.myreader.base.LazyFragment;
+import xyz.fycz.myreader.common.APPCONST;
import xyz.fycz.myreader.databinding.FragmentFindBook1Binding;
import xyz.fycz.myreader.entity.FindKind;
import xyz.fycz.myreader.ui.adapter.TabFragmentPageAdapter;
+import xyz.fycz.myreader.util.help.StringHelper;
import xyz.fycz.myreader.webapi.crawler.base.FindCrawler;
/**
@@ -33,11 +36,36 @@ public class FindBook1Fragment extends LazyFragment {
private List kinds;
private FindCrawler findCrawler;
private PopupMenu kindMenu;
+ private static final String KINDS = "FindBook1FragmentKinds";
+ private static final String FIND_CRAWLER = "FindBook1FragmentFindCrawler";
+
+ public FindBook1Fragment() {
+ }
public FindBook1Fragment(List kinds, FindCrawler findCrawler) {
this.kinds = kinds;
this.findCrawler = findCrawler;
}
+
+ @Override
+ public void onCreate(@Nullable Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ if (savedInstanceState != null) {
+ String dataKey = savedInstanceState.getString(APPCONST.DATA_KEY);
+ kinds = (List) BitIntentDataManager.getInstance().getData(KINDS + dataKey);
+ findCrawler = (FindCrawler) BitIntentDataManager.getInstance().getData(FIND_CRAWLER + dataKey);
+ }
+ }
+
+ @Override
+ public void onSaveInstanceState(@NonNull Bundle outState) {
+ String dataKey = StringHelper.getStringRandom(25);
+ BitIntentDataManager.getInstance().putData(KINDS + dataKey, kinds);
+ BitIntentDataManager.getInstance().putData(FIND_CRAWLER + dataKey, findCrawler);
+ outState.putString(APPCONST.DATA_KEY, dataKey);
+ super.onSaveInstanceState(outState);
+ }
+
@Override
public void lazyInit() {
kindMenu = new PopupMenu(getContext(), binding.ivMenu, Gravity.END);
diff --git a/app/src/main/java/xyz/fycz/myreader/ui/fragment/FindBook2Fragment.java b/app/src/main/java/xyz/fycz/myreader/ui/fragment/FindBook2Fragment.java
index cec9263..6f57a5d 100644
--- a/app/src/main/java/xyz/fycz/myreader/ui/fragment/FindBook2Fragment.java
+++ b/app/src/main/java/xyz/fycz/myreader/ui/fragment/FindBook2Fragment.java
@@ -31,6 +31,7 @@ import xyz.fycz.myreader.ui.activity.BookstoreActivity;
import xyz.fycz.myreader.ui.adapter.holder.FindBookHolder;
import xyz.fycz.myreader.ui.dialog.SourceExchangeDialog;
import xyz.fycz.myreader.util.ToastUtils;
+import xyz.fycz.myreader.util.help.StringHelper;
import xyz.fycz.myreader.util.utils.RxUtils;
import xyz.fycz.myreader.webapi.BookApi;
import xyz.fycz.myreader.webapi.crawler.base.FindCrawler;
@@ -48,12 +49,35 @@ public class FindBook2Fragment extends LazyFragment {
private BaseListAdapter findBookAdapter;
private SourceExchangeDialog mSourceDia;
+ private static final String KIND = "kind";
+ private static final String FIND_CRAWLER = "findCrawler";
+
+ public FindBook2Fragment() {
+ }
public FindBook2Fragment(FindKind kind, FindCrawler findCrawler) {
this.kind = kind;
this.findCrawler = findCrawler;
}
+ @Override
+ public void onCreate(@Nullable Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ if (savedInstanceState != null) {
+ String dataKey = savedInstanceState.getString(APPCONST.DATA_KEY);
+ kind = (FindKind) BitIntentDataManager.getInstance().getData(KIND + dataKey);
+ findCrawler = (FindCrawler) BitIntentDataManager.getInstance().getData(FIND_CRAWLER + dataKey);
+ }
+ }
+
+ @Override
+ public void onSaveInstanceState(@NonNull Bundle outState) {
+ String dataKey = StringHelper.getStringRandom(25);
+ BitIntentDataManager.getInstance().putData(KIND + dataKey, kind);
+ BitIntentDataManager.getInstance().putData(FIND_CRAWLER + dataKey, findCrawler);
+ outState.putString(APPCONST.DATA_KEY, dataKey);
+ super.onSaveInstanceState(outState);
+ }
@Override
public void lazyInit() {
initData();
diff --git a/app/src/main/res/drawable/ic_right_arrow_small.xml b/app/src/main/res/drawable/ic_right_arrow_small.xml
new file mode 100644
index 0000000..d3fb075
--- /dev/null
+++ b/app/src/main/res/drawable/ic_right_arrow_small.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/app/src/main/res/layout/layout_book_detail_header.xml b/app/src/main/res/layout/layout_book_detail_header.xml
index 64033a3..4d48631 100644
--- a/app/src/main/res/layout/layout_book_detail_header.xml
+++ b/app/src/main/res/layout/layout_book_detail_header.xml
@@ -21,37 +21,39 @@
+ android:id="@+id/book_detail_iv_cover"
+ android:layout_width="82dp"
+ android:layout_height="110dp"
+ android:background="@color/colorPrimary"
+ android:scaleType="centerCrop"
+ app:srcCompat="@mipmap/default_cover" />
-
+ android:id="@+id/book_detail_tv_author"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_alignTop="@+id/cover"
+ android:layout_marginStart="14dp"
+ android:layout_marginTop="30dp"
+ android:layout_toEndOf="@+id/cover"
+ android:ellipsize="end"
+ android:gravity="center"
+ android:maxLines="1"
+ android:textColor="@color/origin"
+ app:drawableRightCompat="@drawable/ic_right_arrow_small"
+ app:drawableTint="@color/textAssistInverted"
+ tools:text=" 茶叶蛋" />
diff --git a/app/version_code.properties b/app/version_code.properties
index 0c5d80e..e79417b 100644
--- a/app/version_code.properties
+++ b/app/version_code.properties
@@ -1,3 +1,3 @@
#Fri Jun 18 21:45:31 CST 2021
-VERSION_CODE=219
-NEED_CREATE_RELEASE=true
+VERSION_CODE=220
+NEED_CREATE_RELEASE=false