有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java setText因NullPointerException而失败

抱歉,伙计们,我知道了。数据实际上是空的。愚蠢的错误,应该在发布前正确调试。抱歉

我知道这个问题以前被问过很多次,但我仍然无法解决我的问题

活动_abcd。xml

<RelativeLayout xmlns:安卓="http://schemas.安卓.com/apk/res/安卓"
    xmlns:tools="http://schemas.安卓.com/tools"
    安卓:layout_width="match_parent"
    安卓:layout_height="match_parent"
    安卓:paddingLeft="@dimen/activity_horizontal_margin"
    安卓:paddingRight="@dimen/activity_horizontal_margin"
    安卓:paddingTop="@dimen/activity_vertical_margin"
    安卓:paddingBottom="@dimen/activity_vertical_margin"
    tools:context=".ActivityAbcd">

    <ScrollView
        安卓:layout_width="wrap_content"
        安卓:layout_height="wrap_content"
        安卓:id="@+id/scrollView" >

        <TextView
            安卓:layout_width="wrap_content"
            安卓:layout_height="wrap_content"
            安卓:singleLine="false"
            安卓:text="nothing set"
            安卓:id="@+id/outputtv" />
    </ScrollView>

</RelativeLayout>

活动。爪哇

package com.example.myfirstapp;
public class ActivityAbcd extends Activity {




    @SuppressLint("NewApi")
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //STUFF
        setContentView(R.layout.activity_abcd);
        new SocketTask().execute();
    }


    public final class SocketTask extends AsyncTask<Void, Void, Void> {

        public byte[] data;
        @Override
        protected Void doInBackground(Void... voids) {
            //STUFF involving data
        }



        @Override
        protected void onPostExecute(Void voids) {
            TextView text = (TextView) findViewById(R.id.outputtv);
            text.setText("" + new String(data));
        }


    }


}

我得到了text.setText("" + new String(data))行的NullPointerException

我不明白为什么。我在Android studio中开发,IDE在运行之前不会产生任何错误


共 (3) 个答案

  1. # 1 楼答案

    抱歉,伙计们,我知道了data实际上是空的。愚蠢的错误,应该在发布前正确调试。抱歉

  2. # 2 楼答案

    试着跟随

    byte[] data = null;
    String s = new String(data);
    text.setText(s);
    
  3. # 3 楼答案

    public byte[] data;声明之后,您还没有初始化它data为空