[英]Intent error can not receive value from another activity then force close
任何人都可以提供幫助,我的程序被強制關閉了,是因為出現了空指針錯誤還是其他原因,因為它無法從另一個類獲取值。 誰能告訴我我哪里出錯了?
這送禮者
if(position == 0){
Intent i = new Intent(ListKategoriKUHAP.this, PasalbyKatUndangKUHAP.class);
i.putExtra("value1", "1");
startActivity(i);
}
else
{
if(position == 1){
Intent i = new Intent(ListKategoriKUHAP.this, PasalbyKatUndangKUHAP.class);
i.putExtra("value1", "2");
startActivity(i);
}
這是接收者
private void setData()
{
Bundle extras = getIntent().getExtras();
if (extras != null)
{
String value = extras.getString("value1");
if(value=="1")
{
listKamus = dbHelper.getAllPasalBab1();
}
}
adapter = new ArrayAdapter<Data>(this,
android.R.layout.simple_expandable_list_item_1, listKamus);
lv.setAdapter(adapter);
}
getAllPasalBab1()沒問題,我已經嘗試過修改代碼,但是當我使用intent時,它給出了一個錯誤null指針。 有人可以幫我嗎?
這是logcat
02-27 20:20:28.460: E/AndroidRuntime(1750): FATAL EXCEPTION: main
02-27 20:20:28.460: E/AndroidRuntime(1750): Process: com.example.KUHP_KUHAP_KUHperdata, PID: 1750
02-27 20:20:28.460: E/AndroidRuntime(1750): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.KUHP_KUHAP_KUHperdata/com.example.KUHP_KUHAP_KUHperdata.PasalbyKatUndangKUHAP}: java.lang.NullPointerException
02-27 20:20:28.460: E/AndroidRuntime(1750): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2195)
02-27 20:20:28.460: E/AndroidRuntime(1750): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245)
02-27 20:20:28.460: E/AndroidRuntime(1750): at android.app.ActivityThread.access$800(ActivityThread.java:135)
02-27 20:20:28.460: E/AndroidRuntime(1750): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
02-27 20:20:28.460: E/AndroidRuntime(1750): at android.os.Handler.dispatchMessage(Handler.java:102)
02-27 20:20:28.460: E/AndroidRuntime(1750): at android.os.Looper.loop(Looper.java:136)
02-27 20:20:28.460: E/AndroidRuntime(1750): at android.app.ActivityThread.main(ActivityThread.java:5017)
02-27 20:20:28.460: E/AndroidRuntime(1750): at java.lang.reflect.Method.invokeNative(Native Method)
02-27 20:20:28.460: E/AndroidRuntime(1750): at java.lang.reflect.Method.invoke(Method.java:515)
02-27 20:20:28.460: E/AndroidRuntime(1750): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
02-27 20:20:28.460: E/AndroidRuntime(1750): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
02-27 20:20:28.460: E/AndroidRuntime(1750): at dalvik.system.NativeStart.main(Native Method)
02-27 20:20:28.460: E/AndroidRuntime(1750): Caused by: java.lang.NullPointerException
02-27 20:20:28.460: E/AndroidRuntime(1750): at android.widget.ArrayAdapter.getCount(ArrayAdapter.java:330)
02-27 20:20:28.460: E/AndroidRuntime(1750): at android.widget.ListView.setAdapter(ListView.java:480)
02-27 20:20:28.460: E/AndroidRuntime(1750): at com.example.KUHP_KUHAP_KUHperdata.PasalbyKatUndangKUHAP.setData(PasalbyKatUndangKUHAP.java:215)
02-27 20:20:28.460: E/AndroidRuntime(1750): at com.example.KUHP_KUHAP_KUHperdata.PasalbyKatUndangKUHAP.onCreate(PasalbyKatUndangKUHAP.java:34)
02-27 20:20:28.460: E/AndroidRuntime(1750): at android.app.Activity.performCreate(Activity.java:5231)
02-27 20:20:28.460: E/AndroidRuntime(1750): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
02-27 20:20:28.460: E/AndroidRuntime(1750): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2159)
02-27 20:20:28.460: E/AndroidRuntime(1750): ... 11 more
當extras等於null或value
不等於1
時, listKamus
可能為null
,因為如果條件失敗,您將不會初始化listKamus
,因此請在內部if塊中設置適配器,或者在傳遞給適配器之前將listKamus
初始化為:
// initialize listKamus here
listKamus=.....;
if (extras != null)
{
String value = extras.getString("value1");
if(value=="1")
{
listKamus = dbHelper.getAllPasalBab1();
// or set ListView Adapter here
}
}
或者也可以使用equals
代替==
來比較String值。
我不知道這是否有幫助,但是您的listkamus
列表為空。 嘗試使用equals(String)
方法比較value
,然后嘗試進行以下更正:
將listkamus
為您的類變量,然后,
private void setData()
{
Intent mIntent = getIntent();
if (mIntent != null)
{
String value = mIntent.getStringExtra("value1");
if(value.equals("1"))
{
listKamus = dbHelper.getAllPasalBab1();
}
}
adapter = new ArrayAdapter<Data>(this,
android.R.layout.simple_expandable_list_item_1, listKamus);
lv.setAdapter(adapter);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.