获取一个NullException [英] Getting a NullException
问题描述
可能重复:
我的android程序中的NULL异常
例外:
03-16 17:47:57.058: ERROR/AndroidRuntime(609): FATAL EXCEPTION: main
03-16 17:47:57.058: ERROR/AndroidRuntime(609): java.lang.RuntimeException: Unable to destroy activity {com.TravelPharmacy/com.TravelPharmacy.CountryView}: java.lang.NullPointerException
03-16 17:47:57.058: ERROR/AndroidRuntime(609): at android.app.ActivityThread.performDestroyActivity(ActivityThread.java:2636)
03-16 17:47:57.058: ERROR/AndroidRuntime(609): at android.app.ActivityThread.handleDestroyActivity(ActivityThread.java:2654)
03-16 17:47:57.058: ERROR/AndroidRuntime(609): at android.app.ActivityThread.access$2100(ActivityThread.java:117)
03-16 17:47:57.058: ERROR/AndroidRuntime(609): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:961)
03-16 17:47:57.058: ERROR/AndroidRuntime(609): at android.os.Handler.dispatchMessage(Handler.java:99)
03-16 17:47:57.058: ERROR/AndroidRuntime(609): at android.os.Looper.loop(Looper.java:123)
03-16 17:47:57.058: ERROR/AndroidRuntime(609): at android.app.ActivityThread.main(ActivityThread.java:3647)
03-16 17:47:57.058: ERROR/AndroidRuntime(609): at java.lang.reflect.Method.invokeNative(Native Method)
03-16 17:47:57.058: ERROR/AndroidRuntime(609): at java.lang.reflect.Method.invoke(Method.java:507)
03-16 17:47:57.058: ERROR/AndroidRuntime(609): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
03-16 17:47:57.058: ERROR/AndroidRuntime(609): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
03-16 17:47:57.058: ERROR/AndroidRuntime(609): at dalvik.system.NativeStart.main(Native Method)
03-16 17:47:57.058: ERROR/AndroidRuntime(609): Caused by: java.lang.NullPointerException
03-16 17:47:57.058: ERROR/AndroidRuntime(609): at com.TravelPharmacy.CountryView.onDestroy(CountryView.java:117)
03-16 17:47:57.058: ERROR/AndroidRuntime(609): at android.app.ActivityThread.performDestroyActivity(ActivityThread.java:2623)
03-16 17:47:57.058: ERROR/AndroidRuntime(609):
... 11 more
这是First活动的onCreate,当您按下按钮(fromButton)时,该按钮将调用另一个活动,并希望重新获得国家的名称。
That is the onCreate of First activity, when you press on the button (fromButton) that will call the other activity and expect to get back the name of the country
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.home);
// final int recquestCode = 0;
final Button btnCountryfrom = (Button) findViewById(R.id.fromButton);
btnCountryfrom.setOnClickListener(new OnClickListener()
{
public void onClick(View v)
{
Intent pingIntent = new Intent(getApplicationContext(),CountryView.class);
pingIntent.putExtra("btnText", " ");
pingIntent.setClass(TravelPharmacy.this, CountryView.class);
startActivityForResult(pingIntent, RECEIVE_MESSAGE);
Log.i("tag for easy filter in logcat 6","I am Working!!!");
ButtonFromPressed=true;
}
});
}
在找回在其他活动中选择的国家/地区名称时
onActivityResult并在按钮中设置国家名称
when getting back the name of the country that be choose in the other activity Override onActivityResult and set the name of country in the button
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data)
{
super.onActivityResult(requestCode, resultCode, data);
Button btnCountryfrom = (Button) findViewById(R.id.fromButton);
CharSequence seq = data.getCharSequenceExtra("response");
btnCountryfrom.setText(seq);
ButtonFromPressed=false;
}
}
我的第二个活动的onCreate
the onCreate of my second Activity
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.country);
mListUsers = getCountry();
lvUsers = (ListView) findViewById(R.id.countrylistView);
lvUsers.setAdapter(new ListAdapter(this, R.id.countrylistView, mListUsers));
lvUsers.setOnItemClickListener(new OnItemClickListener()
{
public void onItemClick(AdapterView<?> parent, View view,int position, long id)
{
Intent pongIntent = new Intent();
Log.i("tag for easy filter in logcat 1", "information you provide");
Log.i("tag for easy filter in logcat 2",mListUsers.get(position).pays);
pongIntent.putExtra("response",mListUsers.get(position).pays);
setResult(Activity.RESULT_OK,pongIntent);
finish();
Log.i("tag for easy filter in logcat 3",mListUsers.get(position).pays);
}
});
}
第二次活动的onDestroy()。
The onDestroy() for my second Activity.
@Override
public void onDestroy()
{
// adapter.imageLoader.stopThread();
//mListUsers=null;
lv.setAdapter(null);
super.onDestroy();
}
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
android:id="@+id/widget142"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
xmlns:android="http://schemas.android.com/apk/res/android"
>
<RelativeLayout
android:id="@+id/widget143"
android:layout_height="33px"
android:background="@color/blue"
android:layout_width="fill_parent">
<ImageButton
android:id="@+id/homeImageButton"
android:layout_width="47px"
android:layout_height="34px"
android:layout_alignParentTop="true"
android:layout_alignParentLeft="true"
>
</ImageButton>
<TextView
android:id="@+id/countryTextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Country"
android:textSize="20sp"
android:textStyle="bold"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
>
</TextView>
</RelativeLayout>
<ListView
android:id="@+id/countrylistView"
android:layout_width="match_parent" android:layout_height="250px">
</ListView>
</LinearLayout>
我将不胜感激!!!
谢谢!
推荐答案
检查ListAdapter是否存在于R.layout.country上,看起来像是在出现问题:
Check if the ListAdapter exist on R.layout.country where it looks like you are getting the problem:
findViewById(R.id.countrylistView);
findViewById(R.id.countrylistView);
因为您的listView没有被实例化。您可以发布国家/地区布局
Because your listView have not been instatiated. Can you post the country layout
这篇关于获取一个NullException的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!