簡體   English   中英

如何在我的適配器中啟動 Activity?

[英]How to start Activity in my adapter?

如何在適配器中啟動活動? 我在我的適配器中使用這個方法:

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

但這僅適用於我的應用程序片段,當我在 Activity App 中調用此代碼時突然崩潰了!

我的另一個問題是,這是在適配器中啟動活動的好方法嗎?

我的日志:

11-27 21:25:25.086 22237-22237/com.katibehpayam.mahdi.katibehpayam E/AndroidRuntime:致命異常:主要 11-27 21:25:25.086 22237-22237-22237-22237-22237-22237-22237-22237-22237-22237-22237-222237 java.lang.NullPointerException 11-27 21:25:25.086 22237-22237/com.katibehpayam.mahdi.katibehpayam E/AndroidRuntime:在 com.katibehpayam.mahdi.katibehpayam.adapter_common.java1.adapter_common$7: 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.037/2227/2222 katibehpayam.mahdi.katibehpayam E/AndroidRuntime:在 android.view.View$PerformClick.run(View.java:18044) 11-27 21:25:25.086 22237-22237/com.katibehpayam.mahdi.katibehpayam.katibehtime:AndroidE 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.katibehpayam。 mahdi.katibehpayam E/AndroidRuntime:在 android.os.Looper.loop(Looper.java:137) 11-27 21:25:25.086 22237-22237/com.katibehpayam.mahdi.katibehpayam E/Androidapptime:在 android. 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- 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-com/22237 .katibehpayam.mahdi.katibehpayam E/AndroidRuntime:在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1102) 11-27 21:25:25.086 22237-22237-22237-22237-22237-22237 E/AndroidRuntime:在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:869) 11-27 21:25:25.086 22237-22237/com.katibehpayam.mahdi.katibehpayam E/Androidvikpayam:在 dal .NativeStart.main(本機方法)

你可以試試:

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

您應該發布 Logcat 中的錯誤,以便我們進一步幫助您。 但是,從您所展示的內容中,我發現您的代碼沒有任何本質上的錯誤。 確保您的上下文設置正確。 此外,如果你已經在一個活動中,你不需要

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

你可以簡單地說

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

如果您不在活動中,那么您需要像這樣傳遞上下文

MyAdapter myAdapter = new MyAdapter(this);

然后在您的適配器內設置您的上下文,如下所示:

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

編輯

您的 logcat 顯示空指針異常是您崩潰的原因。 您能否將adapter_common.java 中的代碼發布在第266 行? 謝謝

在 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)
}

}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM