代码在Android / Oxygen OS相关手机中不起作用,但在Galaxy手机中工作

问题描述 投票:0回答:1

我在Playstore中部署了我的应用程序,并且在Galaxy手机中工作时没有遇到任何问题,但它在Oxygen OS中崩溃了。以下是我的代码和错误。任何建议都非常感谢。

语言使用Kotlin

尝试的选项

myIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

码:

override fun onBindViewHolder(p0: MyViewHolder, p1: Int) {
    Picasso.get().load(testList[p1].Image).into(p0.imageView)
    p0.textView.text=testList[p1].Name
    p0.setClick(object:IRecyclerClick
    {
        override fun onClick(view: View, position: Int) {
         context.startActivity(Intent(context,MainActivity::class.java))
            Intent(context, MainActivity::class.java)
            Common.selected_test=testList[position]

        }
    }
    )
}

错误:

2019-03-19 23:57:00.545 26980-26980/com.candy.testreader E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.candy.testreader, PID: 26980
android.util.AndroidRuntimeException: Calling startActivity() from outside of an Activity  context requires the FLAG_ACTIVITY_NEW_TASK flag. Is this really what you want?
    at android.app.ContextImpl.startActivity(ContextImpl.java:912)
    at android.app.ContextImpl.startActivity(ContextImpl.java:888)
    at com.candy.testreader.Adapter.MyTestAdapter$onBindViewHolder$1.onClick(MyTestAdapter.kt:39)
    at com.candy.testreader.Adapter.MyTestAdapter$MyViewHolder.onClick(MyTestAdapter.kt:50)
    at android.view.View.performClick(View.java:6597)
    at android.view.View.performClickInternal(View.java:6574)
    at android.view.View.access$3100(View.java:778)
    at android.view.View$PerformClick.run(View.java:25885)
    at android.os.Handler.handleCallback(Handler.java:873)
    at android.os.Handler.dispatchMessage(Handler.java:99)
    at android.os.Looper.loop(Looper.java:193)
    at android.app.ActivityThread.main(ActivityThread.java:6669)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)
android android-intent kotlin android-inflate
1个回答
0
投票

您的上下文对象似乎是问题,您传递的是哪个上下文?在更安全的一面,通过从初始化视图中获取上下文来做类似的事情

override fun onBindViewHolder(p0: MyViewHolder, p1: Int) {
Picasso.get().load(testList[p1].Image).into(p0.imageView)
p0.textView.text=testList[p1].Name
p0.setClick(object:IRecyclerClick
{
    override fun onClick(view: View, position: Int) {
     view.context.startActivity(Intent(view.context,MainActivity::class.java))
        Intent(view.context, MainActivity::class.java)
        Common.selected_test=testList[position]

    }
}
)}

编辑:解释为什么在我解释的情况下使用上下文是因为对用户充气和可见的视图包含对其所在活动的上下文的引用。

阅读:https://android-developers.googleblog.com/2009/01/avoiding-memory-leaks.html

© www.soinside.com 2019 - 2024. All rights reserved.