简体   繁体   中英

Null object reference on setText in Android app

My app crashes on this setText here. I think probably because it cannot find the id so I looked into to R.java and found the id there. I'm confused why it still crashes.

TextView city = (TextView)findViewById(R.id.city_result);
city.setText(msg[0]);

R.java

public static final int city_result=0x7f080041;

and this code is in the public static final class id method.

Any help will be appreciated! Thanks!!

================ More Code:

 protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_weather_report);
    if (savedInstanceState == null) {
        getSupportFragmentManager().beginTransaction()
                .add(R.id.container, new PlaceholderFragment())
                .commit();
    }

    //get message from intent
    Intent intent = getIntent();
    String[] message = intent.getStringArrayExtra(MainActivity.EXTRA_MESSAGE);
    setResult(message);
}
public void setResult(String[] msg)
    {
        //test
        TextView city = (TextView)findViewById(R.id.city_result);
        city.setText(msg[0]);
    }

This file I just started, elsewhere is just system generated new file code, I didn't edit yet. Here's logcat:

    java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.chen.weather/com.example.chen.weather.WeatherReport}: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.TextView.setText(java.lang.CharSequence)' on a null object reference
            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2298)
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2360)
            at android.app.ActivityThread.access$800(ActivityThread.java:144)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1278)
            at android.os.Handler.dispatchMessage(Handler.java:102)
            at android.os.Looper.loop(Looper.java:135)
            at android.app.ActivityThread.main(ActivityThread.java:5221)
            at java.lang.reflect.Method.invoke(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:372)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)
     Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.TextView.setText(java.lang.CharSequence)' on a null object reference
            at com.example.chen.weather.WeatherReport.setResult(WeatherReport.java:78)
            at com.example.chen.weather.WeatherReport.onCreate(WeatherReport.java:32)
            at android.app.Activity.performCreate(Activity.java:5933)
            at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1105)
            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2251)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2360)
                at android.app.ActivityThread.access$800(ActivityThread.java:144)
                at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1278)
                at android.os.Handler.dispatchMessage(Handler.java:102)
                at android.os.Looper.loop(Looper.java:135)
                at android.app.ActivityThread.main(ActivityThread.java:5221)
                at java.lang.reflect.Method.invoke(Native Method)
                at java.lang.reflect.Method.invoke(Method.java:372)
                at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899)
                at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)

NullPointerException: Attempt to invoke virtual method 'void android.widget.TextView.setText

Means city TextView object is null due to :

1. setContentView is not called before using findViewById :

2. Not using layout in which TextView is defined with city_result id. make sure you are passing right layout in setContentView

check that your activity is correct!!

setContentView(R.layout. activity_weather_report );

Which layout did you put the TextView? I doubt that in this case, you put the TextView in PlaceHolder fragment layout (not the activity_weather_report.xml layout). If so, putting the TextView in activity_weather_report.xml will solve your problem.

Problem is just the id

Make sure that you are using correct id for TextView in Layout xml file . I had same issue and it resolved by solving spelling mistake .

it is showing this exception because your textview is not getting data at time of onCeate method. declare your textview in onCreate method, put yourtextview.setText(xyz) wherever you are getting that "xyz" value. Hope this will work.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM