Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Textview setText上的Android空指针异常_Android_Nullpointerexception_Textview - Fatal编程技术网

Textview setText上的Android空指针异常

Textview setText上的Android空指针异常,android,nullpointerexception,textview,Android,Nullpointerexception,Textview,强制在UI线程中运行的settext上引发Android空指针异常 runOnUiThread(new Runnable() { @Override public void run() { String name=portalData.getFullname(); setContentView(R.layout.grad

强制在UI线程中运行的settext上引发Android空指针异常

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

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

                           }
                });

我已成为TextView的静态成员 我正在做这件事

super.onStart()

无法理解是什么导致了这种情况 堆栈跟踪

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>

将其反转

  TextView tname=(TextView)findViewById(R.id.fullname); 
  setContentView(R.layout.vbook);
findViewById
查找具有当前布局中提到的id的视图

因此,如果您在颠倒上述两条语句后仍获得NPE,您应该检查
vbook.xml
是否有id为
fullname
的文本视图

此外,视图的所有初始化通常在ui线程
onCreate
中完成。我不知道你想做什么

vbook.xml

   <TextView
    android:id="@+id/textView3"
setContentView(layout)在使用findViewById(id)映射视图之前,应始终调用


如果在反转后发生相同的错误,请确保您试图映射的id在布局文件中可用,因为TextView为空,所以空引用为空。 为了

TextView tname=(TextView)findViewById(R.id.fullname);
要返回TextView,必须首先初始化布局。 将代码更改为,您会做得很好:

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

正如@Ravi所说,Set contentview应该始终位于binding视图之前。 除此之外,在xml中没有像R.id.fullname这样的id。取而代之的是textview3 因此,请尝试以下代码:

setContentView(R.layout.gradebook);// I assume gradebook is your xml file 

tname=(TextView)findViewById(R.id.textView3);  //textView3 is the id you passed in TextView. 

希望这对您有所帮助。

我已经尝试过这个setContentView(R.layout.gradebook);tname=(TextView)findViewById(R.id.fullname);你能复制R.layout.vbook吗?@user2845482请发布更多相关代码和堆栈跟踪我已经发布了vbookXML@user2845482更改为
TextView tname=(TextView)findViewById(R.id.textView3)
我已经更改了顺序,但仍然是相同的空指针例外确保id为fullname的布局文件中有textview并发布堆栈跟踪我已经发布了完整的详细信息和堆栈跟踪。我在回答中说,您试图映射的id应该存在于您在setContentView()中使用的布局文件中我已经发布了完整的详细信息,请检查您在哪里有此
runOnUiThread
tname
为空
setContentView(R.layout.gradebook);// I assume gradebook is your xml file 

tname=(TextView)findViewById(R.id.textView3);  //textView3 is the id you passed in TextView.