优化
This commit is contained in:
@@ -43,11 +43,17 @@ import io.legado.app.ui.main.explore.ExploreFragment
|
||||
import io.legado.app.ui.main.my.MyFragment
|
||||
import io.legado.app.ui.main.rss.RssFragment
|
||||
import io.legado.app.ui.widget.dialog.TextDialog
|
||||
import io.legado.app.utils.*
|
||||
import io.legado.app.utils.hideSoftInput
|
||||
import io.legado.app.utils.isCreated
|
||||
import io.legado.app.utils.observeEvent
|
||||
import io.legado.app.utils.setEdgeEffectColor
|
||||
import io.legado.app.utils.showDialogFragment
|
||||
import io.legado.app.utils.toastOnUi
|
||||
import io.legado.app.utils.viewbindingdelegate.viewBinding
|
||||
import kotlinx.coroutines.Dispatchers.IO
|
||||
import kotlinx.coroutines.launch
|
||||
import kotlinx.coroutines.withContext
|
||||
import kotlin.collections.set
|
||||
import kotlin.coroutines.resume
|
||||
import kotlin.coroutines.suspendCoroutine
|
||||
|
||||
@@ -446,7 +452,11 @@ class MainActivity : VMBaseActivity<ActivityMainBinding, MainViewModel>(),
|
||||
}
|
||||
|
||||
override fun instantiateItem(container: ViewGroup, position: Int): Any {
|
||||
val fragment = super.instantiateItem(container, position) as Fragment
|
||||
var fragment = super.instantiateItem(container, position) as Fragment
|
||||
if (fragment.isCreated && getItemPosition(fragment) == POSITION_NONE) {
|
||||
destroyItem(container, position, fragment)
|
||||
fragment = super.instantiateItem(container, position) as Fragment
|
||||
}
|
||||
fragmentMap[getId(position)] = fragment
|
||||
return fragment
|
||||
}
|
||||
|
||||
@@ -22,7 +22,10 @@ import io.legado.app.ui.book.group.GroupEditDialog
|
||||
import io.legado.app.ui.book.search.SearchActivity
|
||||
import io.legado.app.ui.main.bookshelf.BaseBookshelfFragment
|
||||
import io.legado.app.ui.main.bookshelf.style1.books.BooksFragment
|
||||
import io.legado.app.utils.*
|
||||
import io.legado.app.utils.isCreated
|
||||
import io.legado.app.utils.setEdgeEffectColor
|
||||
import io.legado.app.utils.showDialogFragment
|
||||
import io.legado.app.utils.toastOnUi
|
||||
import io.legado.app.utils.viewbindingdelegate.viewBinding
|
||||
import kotlin.collections.set
|
||||
|
||||
@@ -168,8 +171,15 @@ class BookshelfFragment1() : BaseBookshelfFragment(R.layout.fragment_bookshelf1)
|
||||
}
|
||||
|
||||
override fun instantiateItem(container: ViewGroup, position: Int): Any {
|
||||
val fragment = super.instantiateItem(container, position) as BooksFragment
|
||||
var fragment = super.instantiateItem(container, position) as BooksFragment
|
||||
val group = bookGroups[position]
|
||||
/**
|
||||
* Activity recreate 会复用之前的 Fragment,不正确的需要需要重新创建
|
||||
*/
|
||||
if (fragment.isCreated && getItemPosition(fragment) == POSITION_NONE) {
|
||||
destroyItem(container, position, fragment)
|
||||
fragment = super.instantiateItem(container, position) as BooksFragment
|
||||
}
|
||||
fragmentMap[group.groupId] = fragment
|
||||
return fragment
|
||||
}
|
||||
|
||||
@@ -17,8 +17,10 @@ import io.noties.markwon.Markwon
|
||||
import io.noties.markwon.ext.tables.TablePlugin
|
||||
import io.noties.markwon.html.HtmlPlugin
|
||||
import io.noties.markwon.image.glide.GlideImagesPlugin
|
||||
import kotlinx.coroutines.Dispatchers.IO
|
||||
import kotlinx.coroutines.delay
|
||||
import kotlinx.coroutines.launch
|
||||
import kotlinx.coroutines.withContext
|
||||
|
||||
|
||||
class TextDialog() : BaseDialogFragment(R.layout.dialog_text_view) {
|
||||
@@ -67,13 +69,15 @@ class TextDialog() : BaseDialogFragment(R.layout.dialog_text_view) {
|
||||
binding.toolBar.title = it.getString("title")
|
||||
val content = IntentData.get(it.getString("content")) ?: ""
|
||||
when (it.getString("mode")) {
|
||||
Mode.MD.name -> binding.textView.post {
|
||||
Markwon.builder(requireContext())
|
||||
.usePlugin(GlideImagesPlugin.create(requireContext()))
|
||||
.usePlugin(HtmlPlugin.create())
|
||||
.usePlugin(TablePlugin.create(requireContext()))
|
||||
.build()
|
||||
.setMarkdown(binding.textView, content)
|
||||
Mode.MD.name -> viewLifecycleOwner.lifecycleScope.launch {
|
||||
binding.textView.text = withContext(IO) {
|
||||
Markwon.builder(requireContext())
|
||||
.usePlugin(GlideImagesPlugin.create(requireContext()))
|
||||
.usePlugin(HtmlPlugin.create())
|
||||
.usePlugin(TablePlugin.create(requireContext()))
|
||||
.build()
|
||||
.toMarkdown(content)
|
||||
}
|
||||
}
|
||||
|
||||
Mode.HTML.name -> binding.textView.setHtml(content)
|
||||
|
||||
@@ -12,6 +12,7 @@ import androidx.annotation.DrawableRes
|
||||
import androidx.core.content.edit
|
||||
import androidx.fragment.app.DialogFragment
|
||||
import androidx.fragment.app.Fragment
|
||||
import androidx.lifecycle.Lifecycle
|
||||
import io.legado.app.R
|
||||
import io.legado.app.ui.widget.dialog.TextDialog
|
||||
|
||||
@@ -83,4 +84,7 @@ inline fun <reified T : Activity> Fragment.startActivity(
|
||||
fun Fragment.showHelp(fileName: String) {
|
||||
val mdText = String(requireContext().assets.open("web/help/md/${fileName}.md").readBytes())
|
||||
showDialogFragment(TextDialog(getString(R.string.help), mdText, TextDialog.Mode.MD))
|
||||
}
|
||||
}
|
||||
|
||||
val Fragment.isCreated
|
||||
get() = lifecycle.currentState.isAtLeast(Lifecycle.State.CREATED)
|
||||
|
||||
Reference in New Issue
Block a user