0

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)
Zip
  • 809
  • 2
  • 14
  • 30
  • 1
    show more code where `TextView city = (TextView)findViewById(R.id.city_result);` line is used – ρяσѕρєя K Jan 31 '15 at 04:44
  • 1
    Show the log report. – amit singh Jan 31 '15 at 04:46
  • "_My app crashes_" doesn't mean much on it's own. Post logcat output, indicate the line of code producing the error/exception, show us `msg` and how it is created and populated .... – takendarkk Jan 31 '15 at 04:49
  • @ρяσѕρєяK I just started and this is the only place where textview shows up. – Zip Jan 31 '15 at 04:52
  • @Zip: please post more code – ρяσѕρєя K Jan 31 '15 at 04:53
  • @amitsingh `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)` ....... `Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.TextView.setText(java.lang.CharSequence)' on a null object reference at )` ... – Zip Jan 31 '15 at 04:55

5 Answers5

15

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

ρяσѕρєя K
  • 132,198
  • 53
  • 198
  • 213
3

check that your activity is correct!!

setContentView(R.layout.activity_weather_report);

David Hackro
  • 3,652
  • 6
  • 41
  • 61
1

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.

thuongnh.uit
  • 161
  • 6
  • I just checked and it seems that something wrong with android studio, I restart it and it works. Thanks anyway! :) – Zip Jan 31 '15 at 05:15
1

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 .

0

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.