2015-01-31 5 views
0

Мое приложение отключается на этом setText здесь. Я думаю, вероятно, потому, что он не может найти идентификатор, поэтому я посмотрел на R.java и нашел там идентификатор. Я смущен, почему он все еще падает.Ссылка на нулевой объект на setText в приложении для Android

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

R.java

public static final int city_result=0x7f080041; 

и этот код находится в методе public static final class id.

Любая помощь будет оценена! Благодаря!!

================ Подробнее Код:

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]); 
    } 

Этот файл я только начал, в другом месте просто система генерировала новый код файла, я не сделал редактирование пока. Вот LogCat:

01-30 08:32:05.163 4408-4408/com.example.chen.weather E/AndroidRuntime﹕ FATAL EXCEPTION: main 
    Process: com.example.chen.weather, PID: 4408 
    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) 
+1

показать больше кода, где 'TextView city = (TextView) findViewById (R.id.city_result);' используется строка –

+1

Показать отчет журнала. –

+0

«_My app crashes_» не означает, что он сам по себе.Вывести сообщение logcat, указать строку кода, создающую ошибку/исключение, показать нам 'msg' и как он создан и заполнен .... – csmckelvey

ответ

15

NullPointerException: Попытка вызвать виртуальный метод «аннулируются android.widget.TextView.setText

Средства city TextView объект null из-за:

1.setContentView не вызывается перед использованием findViewById:

2. Не используется макет, в котором TextView определяется с помощью city_result id. убедитесь, что вы передаете правильную планировку в setContentView

+0

Я действительно новый к андроиду. Я использую 'super.onCreate (savedInstanceState); setContentView (R.layout.activity_weather_report); 'Правильно ли это? Это должно быть имя файла xml, связанного с этим java-файлом. – Zip

+0

@Zip: В каком макете у вас есть «TextView» с идентификатором city_result. ? –

+0

activity_weather_report.xml – Zip

1

Какую компоновку вы разместили в TextView? Я сомневаюсь, что в этом случае вы помещаете TextView в макет фрагмента PlaceHolder (а не в макет activity_weather_report.xml). Если это так, то размещение TextView в activity_weather_report.xml решит вашу проблему.

+0

Я только что проверил, и кажется, что что-то не так с андроид-студией, я перезапускаю его, и это работает. Спасибо, в любом случае! :) – Zip

3

убедитесь, что ваша деятельность верна!

комплектContentView (R.layout. activity_weather_report);

1

Проблема только id

Убедитесь, что вы используете правильный идентификатор для TextView в Layout xml файл. У меня была такая же проблема, и она разрешилась путем решения орфографической ошибки.

0

показывает это исключение, потому что ваше текстовое представление не получает данные во время метода onCeate. объявите свое текстовое представление в методе onCreate, положите yourtextview.setText (xyz) везде, где вы получаете это значение «xyz». Надеюсь, что это сработает.

Смежные вопросы