小编Ale*_*sov的帖子

在Fragment的附加ViewModel上没有调用onCleared

ViewModel.OnCleared()当应用程序进入后台时(即使Don't keep activities已启用),当我没有被调用时,我偶然发现了一个问题,但我可以看到Fragment.onDestroy()实际上正在调用它.

以下代码可能有什么问题?如何ViewModel.OnCleared()在这种情况下实际调用?

视图模型:

class ViewModelFirst(application: Application) : AndroidViewModel(application) {

    companion object {
        private const val TAG = "ViewModelFirst"
    }

    init {
        Log.v(TAG, "Created")
    }

    override fun onCleared() {
        super.onCleared()
        Log.v(TAG, "onCleared")
    }
}
Run Code Online (Sandbox Code Playgroud)

分段:

class FragmentFirst : Fragment() {

    companion object {
        private const val TAG = "FragmentFirst"
    }

    override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {

        ViewModelProviders.of(this).get(ViewModelFirst::class.java)

        return inflater.inflate(R.layout.fragment_first, container, false)
    }

    override fun onDestroy() {
        super.onDestroy()
        Log.v(TAG, …
Run Code Online (Sandbox Code Playgroud)

android android-viewmodel android-architecture-components

9
推荐指数
1
解决办法
2832
查看次数

WebView 选择文件和 Activity 重新创建

有一个应用程序,其中用户入门流程以网页形式实现,并显示在嵌入式 WebView 中。该流程步骤之一是文件上传。

<input/>它是通过在网页上使用标签并通过覆盖来进一步处理它来实现的,该覆盖WebChromeClient.onShowFileChooser(..., filePathCallback: ValueCallback<Array<Uri>>?, ...)最终触发startActivityForResult(...)应该由平台文件选择器活动提供的启动(对于不同的供应商/版本可能有所不同)。

和往常一样,一切正常,直到活动被破坏:)

问题是,当文件选择器活动在应用程序活动之上启动时,最后一个活动可能会被销毁(由于系统缺乏资源、旋转等原因)。那么我们拥有的WebViewfilePathCallback也会被销毁。filePathCallback这意味着应用程序在获取所选文件的 URI(在 上)时此时不具有有效的 URI onActivityResult

你们如何解决这个问题?

我创建了一个简单的项目来单独代表该问题,请随意查看: https: //github.com/allco/WebViewFileChooseIssue

这是一些视频:

http://www.youtube.com/watch?v=9mnd0lT9lZI

案例 #2 演示了该问题,即使选择完成,应用程序仍然显示“未选择文件”。

这是带有项目密钥文件的剪辑片段:

class MainActivity : AppCompatActivity() {

    companion object {
        const val REQ_CODE_CHOOSER = 1
    }

    val unencodedHtml = "<input type=file>"
    var webViewFileChooseCallback: ValueCallback<Array<Uri>>? = null

    private val webClient = object : WebViewClient() {
        ...
    }



    private val chromeClient = object : WebChromeClient() {
        ...
        override fun onShowFileChooser(
            webView: …
Run Code Online (Sandbox Code Playgroud)

android filechooser webview

6
推荐指数
0
解决办法
470
查看次数

Android Studio Dolphin新logcat更改字体大小?

Android Studio Dolphin 有了一个新的 logcat。它看起来很有希望,但我还没有找到任何方法来更改新的 logcat 字体大小而不更改编辑器字体大小。

在以前版本的 Android Studio 中,logcat 遵循控制台样式,可以通过“设置”->“编辑器”->“配色方案”->“控制台字体”来减小字体大小,但现在不行了。

有没有办法更改新的 logcat 字体大小而不更改编辑器字体大小?

在此输入图像描述

android-studio-3.1

6
推荐指数
1
解决办法
328
查看次数