获取一个NullException [英] Getting a NullException

查看:54
本文介绍了获取一个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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆