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

Code is not working in Android/Oxygen OS related phones but working in Galaxy phone

我在 Playstore 中部署了我的应用程序,它在 Galaxy phone 中运行没有问题,但它在 Oxygen OS 中崩溃了。以下是我的代码和错误。非常感谢任何建议。

使用的语言 科特林

尝试过的选项

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.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.access00(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)

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

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]

    }
}
)}

编辑:如我所解释的那样使用上下文的解释是因为一个膨胀的并且对用户可见的视图持有对它所在的 Activity 上下文的引用。

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