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.