【问题标题】:How to start Activity in my adapter?如何在我的适配器中启动 Activity?
【发布时间】:2019-12-04 02:31:26
【问题描述】:

如何在适配器中启动活动?我在我的适配器中使用了这个方法:

post.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        context.startActivity(new Intent(context,asabani_cat.class));
    }
});

但这仅适用于我的应用程序片段,当我在 Activity 应用程序中调用此代码时突然崩溃!

我还有一个问题,这是在适配器中启动活动的好方法吗?

我的日志:

11-27 21:25:25.086 22237-22237/com.katibehpayam.mahdi.katibehpayam E/AndroidRuntime: 致命异常: main 11-27 21:25:25.086 22237-22237/com.katibehpayam.mahdi.katibehpayam E /AndroidRuntime: java.lang.NullPointerException 11-27 21:25:25.086 22237-22237/com.katibehpayam.mahdi.katibehpayam E/AndroidRuntime: at com.katibehpayam.mahdi.katibehpayam.adapter_common$7.onClick(adapter_common.java:266 ) 11-27 21:25:25.086 22237-22237/com.katibehpayam.mahdi.katibehpayam E/AndroidRuntime: 在 android.view.View.performClick(View.java:4377) 11-27 21:25:25.086 22237-22237 /com.katibehpayam.mahdi.katibehpayam E/AndroidRuntime: at android.view.View$PerformClick.run(View.java:18044) 11-27 21:25:25.086 22237-22237/com.katibehpayam.mahdi.katibehpayam E/ AndroidRuntime: 在 android.os.Handler.handleCallback(Handler.java:725) 11-27 21:25:25.086 22237-22237/com.katibehpayam.mahdi.katibehpayam E/AndroidRuntime: 在 android.os.Handler.dispatchMessage(Handler .java:92) 11-27 21:25:25.086 22237-22237/com.katibehpay am.mahdi.katibehpayam E/AndroidRuntime: 在 android.os.Looper.loop(Looper.java:137) 11-27 21:25:25.086 22237-22237/com.katibehpayam.mahdi.katibehpayam E/AndroidRuntime: 在 android. app.ActivityThread.main(ActivityThread.java:5306) 11-27 21:25:25.086 22237-22237/com.katibehpayam.mahdi.katibehpayam E/AndroidRuntime: 在 java.lang.reflect.Method.invokeNative(Native Method) 11 -27 21:25:25.086 22237-22237/com.katibehpayam.mahdi.katibehpayam E/AndroidRuntime: 在 java.lang.reflect.Method.invoke(Method.java:511) 11-27 21:25:25.086 22237-22237 /com.katibehpayam.mahdi.katibehpayam E/AndroidRuntime: 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1102) 11-27 21:25:25.086 22237-22237/com.katibehpayam.mahdi .katibehpayam E/AndroidRuntime: 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:869) 11-27 21:25:25.086 22237-22237/com.katibehpayam.mahdi.katibehpayam E/AndroidRuntime: 在 dalvik .system.NativeStart.main(原生方法)

【问题讨论】:

  • 请发布您的日志(例外)。

标签: java android android-activity android-adapter


【解决方案1】:

你可以试试:

post.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        v.getContext().startActivity(new Intent(v.getContext(),asabani_cat.class));
    }
});

【讨论】:

    【解决方案2】:

    您应该从 Logcat 发布错误,以便我们进一步帮助您。但是,从您所展示的内容来看,我发现您的代码没有任何本质上的错误。确保您的上下文设置正确。此外,如果您已经在一个 Activity 中,您确实不需要

    context.startActivity(new Intent(context,asabani_cat.class));
    

    你可以简单地说

    startActivity(new Intent(this, asabani_cat.class));
    

    如果您不在 Activity 中,则需要像这样传递上下文

    MyAdapter myAdapter = new MyAdapter(this);
    

    然后在您的适配器中设置您的上下文,如下所示:

    MyAdapter(Context context) {
        this.context = context;
    }
    

    编辑

    您的 logcat 显示空指针异常是您崩溃的原因。您能否在第 266 行发布来自 adapter_common.java 的代码?谢谢

    【讨论】:

    • 我在我的适配器中使用了这个代码,但它不能在其中工作:-(
    • 您的适配器是在 Activity 中还是在它自己的类文件中?
    • 另外,请在您的问题中添加 logcat 代码,而不是作为答案,以便其他人可以轻松看到它
    • 查看我的编辑,我需要查看adapter_common.java中第266行的代码
    • 这是 266 行:context.startActivity(new Intent(context,asabani_cat.class));
    【解决方案3】:

    在你看来,在 kotlin 中:

    class YourClass: ArrayAdapter<Feature>(), View.OnClickListener{
    
       override fun getView(position: Int, convertView: View?, parent: ViewGroup): View {
    
           var yourView = inflater.inflate(mResource, parent, false)
           yourView .setOnClickListener(){
               onClick(convertView)
        }
      }
    
     override fun onClick(v: View?) {
        val intent = Intent(mContext, SeckondActivity::class.java)
        mContext.startActivity(intent)
    }
    

    }

    【讨论】:

      猜你喜欢
      • 2011-05-10
      • 2015-08-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多