2013-10-15 2 views
4

Android Null исключение указатель выброшены на SetText побежал в UI потоке заставилAndroid Исключение нулевого указателя TextView SetText

runOnUiThread(new Runnable() { 
        @Override 
        public void run() { 
         String name=portalData.getFullname(); 

         setContentView(R.layout.gradebook); 
          tname.setText(name); 

          } 
       }); 

я сделал статический член TextView на Create Im делает этот

super.onStart();

setContentView(R.layout.gradebook); 
     tname=(TextView)findViewById(R.id.fullname); 

не может понять, что является причиной этого StackTrace

10-15 15:19:07.090: E/AndroidRuntime(1604): FATAL EXCEPTION: main 
10-15 15:19:07.090: E/AndroidRuntime(1604): java.lang.NullPointerException 
10-15 15:19:07.090: E/AndroidRuntime(1604):  at com.example.campus.Gradebook$ObservableDemo$6.run(Gradebook.java:518) 
10-15 15:19:07.090: E/AndroidRuntime(1604):  at android.os.Handler.handleCallback(Handler.java:730) 
10-15 15:19:07.090: E/AndroidRuntime(1604):  at android.os.Handler.dispatchMessage(Handler.java:92) 
10-15 15:19:07.090: E/AndroidRuntime(1604):  at android.os.Looper.loop(Looper.java:137) 
10-15 15:19:07.090: E/AndroidRuntime(1604):  at android.app.ActivityThread.main(ActivityThread.java:5103) 
10-15 15:19:07.090: E/AndroidRuntime(1604):  at java.lang.reflect.Method.invokeNative(Native Method) 
10-15 15:19:07.090: E/AndroidRuntime(1604):  at java.lang.reflect.Method.invoke(Method.java:525) 
10-15 15:19:07.090: E/AndroidRuntime(1604):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737) 
10-15 15:19:07.090: E/AndroidRuntime(1604):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) 
10-15 15:19:07.090: E/AndroidRuntime(1604):  at dalvik.system.NativeStart.main(Native Method) 

здесь XML-

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" 
    tools:context=".vbook" > 

    <TextView 
     android:id="@+id/textView3" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentTop="true" 
     android:layout_marginLeft="70dp" 
     android:layout_marginTop="40dp" 
     android:text="Large Text" 
     android:textAppearance="?android:attr/textAppearanceLarge" 
     android:textColor="#007FFF" /> 
</RelativeLayout> 
+0

, где у вас эта 'runOnUiThread'. 'tname' is null – Raghunandan

ответ

12

Реверс эти

TextView tname=(TextView)findViewById(R.id.fullname); 
    setContentView(R.layout.vbook); 

findViewById ло oks для просмотра с идентификатором, указанным в текущем раздутом макете.

Итак, если вы получаете NPE даже после отмены вышеуказанных двух заявлений, вы должны проверить свой vbook.xml, есть ли у вас текстовое изображение с идентификатором fullname.

Также все инициализации вашего вида обычно выполняются в onCreate, который является нитью ui. Я не уверен, что вы пытаетесь сделать.

Вы ниже в vbook.xml

<TextView 
    android:id="@+id/textView3" 

Так изменится TextView tname=(TextView)findViewById(R.id.textView3)

+0

Я пробовал этот setContentView (R.layout.gradebook); \t \t tname = (TextView) findViewById (R.id.fullname); – user2845482

+0

Я попытался изменить их, но не эффект – user2845482

+0

Можете скопировать R.layout.vbook? –

1

setContentView (макет) всегда следует назвать, прежде чем сопоставить взгляды, используя findViewById (ID)

Если такая же ошибка возникает после обращения вспять, убедитесь, что идентификатор, который вы пытаетесь сопоставить, доступен в вашем макете fi le

+0

Я изменил порядок, но все еще такое же исключение nullpointer – user2845482

+0

убедитесь, что текстовое изображение доступно в вашем файле макета с полным именем id и отправляет трассировку вашего стека – Ravi

+0

Я опубликовал полные данные andstacktrace – user2845482

3

Нулевая ссылка с тех пор, как TextView имеет значение NULL. Для того, чтобы

TextView tname=(TextView)findViewById(R.id.fullname); 

вернуть TextView вы должны инициализировать макет первого. Измените код на и вы будете делать хорошо:

setContentView(R.layout.vbook);  
TextView tname=(TextView)findViewById(R.id.fullname); 
+0

Я опубликовал полную информацию и проверил проверочную проверку stacktrace – user2845482

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