任何人都可以帮助,我的程序强制关闭,是否为nullpointer错误或其他什么,因为它无法从另一个类获取值。谁能告诉我哪里出错了?
这是给予者
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时它会给出一个错误的空指针。有人可以帮帮我吗?
这是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
答案 0 :(得分:1)
当extras等于null或listKamus
不等于null
时,value
可能为1
,因为如果条件失败则不会初始化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
代替==
来比较字符串值。
答案 1 :(得分:0)
我不知道这是否会有所帮助,但您的列表listkamus
将变为空。尝试使用value
方法比较equals(String)
,然后尝试这个小修正:
将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);
}