getActivity / MultiLanguages

Android 多语种适配框架,兼容高版本,适配第三方库语种
Apache License 2.0
982 stars 123 forks source link

老哥。不要搞事情啊 #12

Closed TsaiYongChuan closed 3 years ago

TsaiYongChuan commented 3 years ago

部分手机装了之后会闪退 Caused by java.lang.NullPointerException: Attempt to invoke virtual method 'android.content.res.Resources android.content.Context.getResources()' on a null object reference at com.hjq.language.MultiLanguages.updateAppLanguage(MultiLanguages.java:53) at com.vo.ui.web.WebViewFragment.(WebViewFragment.kt:29) at java.lang.reflect.Constructor.newInstance0(Constructor.java) at java.lang.reflect.Constructor.newInstance(Constructor.java:343) at androidx.fragment.app.Fragment.instantiate(Fragment.java:548) at androidx.fragment.app.FragmentContainer.instantiate(FragmentContainer.java:57) at androidx.fragment.app.FragmentManager$3.instantiate(FragmentManager.java:390) at androidx.navigation.fragment.FragmentNavigator.instantiateFragment(FragmentNavigator.java:132) at androidx.navigation.fragment.FragmentNavigator.navigate(FragmentNavigator.java:162) at androidx.navigation.fragment.FragmentNavigator.navigate(FragmentNavigator.java:58) at androidx.navigation.NavController.navigate(NavController.java:1057) at androidx.navigation.NavController.navigate(NavController.java:942) at androidx.navigation.NavController.navigate(NavController.java:875) at androidx.navigation.NavController.navigate(NavController.java:861) at com.vo.ui.mine.MineFragment$onActivityCreated$8.onClick(MineFragment.kt:77) at android.view.View.performClick(View.java:7314) at android.view.View.performClickInternal(View.java:7288) at android.view.View.access$3600(View.java:838) at android.view.View$PerformClick.run(View.java:28240) at android.os.Handler.handleCallback(Handler.java:900) at android.os.Handler.dispatchMessage(Handler.java:103) at android.os.Looper.loop(Looper.java:219) at android.app.ActivityThread.main(ActivityThread.java:8622) at java.lang.reflect.Method.invoke(Method.java) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:513) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1109)

//以下是我继承代码
class LanguagesWebView(
    context: Context,
    attrs: AttributeSet?,
    defStyleAttr: Int
) :
    WebView(context, attrs, defStyleAttr) {
    constructor(context: Context) : this(context, null) {}
    constructor(context: Context, attrs: AttributeSet?) : this(
        context,
        attrs,
        0
    ) {
    }

    init {
        try {
            // 修复 WebView 初始化时会修改 Activity 语种配置的问题
            MultiLanguages.updateAppLanguage(context)
        } catch (e: Throwable) {

        }
    }
}
getActivity commented 3 years ago

小伙子,你传入的 Context 对象中的 Resources 对象为空,这个问题不是框架导致的,你本身在外层传入的时候,Context 对象已经没有 Resources 对象了。

getActivity commented 3 years ago

小伙子,你也可以尝试下载 Github 上面的 Demo 进行测试,看看是否有同样的问题。

TsaiYongChuan commented 3 years ago

小伙子,你的上下文对象中的资源对象不是空框架导致的,你在外层对象的时候,上下文对象已经没有资源对象了。

不会吧老哥,我直接继承webview,然后在xml里面直接使用,哪来的传入null啊,直接被xml初始化了,会自动传入context啊

getActivity commented 3 years ago

@TsaiYongChuan 小伙子,你试一下 Github 提供的 Demo 是否有这样的问题?

TsaiYongChuan commented 3 years ago

@TsaiYongChuan 小伙子,你试一下 Github 提供的 Demo 是否有这样的问题?

老哥,我找到问题了,能一定进入退出复现出来,就是华为的鸿蒙系统,在android上没问题

liangrk commented 1 year ago

@TsaiYongChuan 小伙子,你试一下 Github 提供的 Demo 是否有这样的问题?

老哥,我找到问题了,能一定进入退出复现出来,就是华为的鸿蒙系统,在android上没问题

最后咋个解决的?

TsaiYongChuan commented 1 year ago

@TsaiYongChuan小伙伴,你试试下Github提供的Demo是不是有这样的问题?

老哥,我找到问题了,可以一定进入退出恢复出来,就是华为的鸿蒙系统,在android上没有问题

最后咋个解决的?

最后跟老哥反馈了问题定位了之后,他在新版本增加了判断,你更新库就行了