[英]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.