繁体   English   中英

在代码中设置textview文本

[英]Setting textview text in code

有人可以告诉我我要去哪里了吗?

我正在尝试将名为MyText的textview更改为其他内容,但是在尝试时出现错误:

原因:java.lang.NullPointerException:尝试在android.app.Activity.findViewById(Activity.java:2071上的空对象引用上调用虚拟方法'android.view.View android.view.Window.findViewById(int)' )

public class MainScreen extends Activity {
    TextView texting = (TextView) findViewById(R.id.MyText);

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main_screen);
        texting.setText("Test");

};
}

这是您的代码应如下所示:

public class MainScreen extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main_screen);

        // If you're not using this view anywhere, you don't have to declare it globally. Use only a local variables
        TextView texting = (TextView) findViewById(R.id.MyText);
        texting.setText("Test");

    };
}

在具有根布局之后,您应该始终初始化视图。 在这种情况下,就在您完成setContentView(R.layout.activity_main_screen);之后。 此方案适用于活动。

如果使用片段,则应在onCreateView方法中扩大根布局后立即执行此操作。 就像是:

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    View view = (LinearLayout) inflater.inflate(R.layout.my_fragment, container, false);
    // THIS is where you start initializing your views
    return view;
}

在调用setContentView之后,TextView才可用。 因此,实例化MainScreen时, findViewById将返回null。 解决方案是将findViewById调用移至onCreate方法,如下所示:

public class MainScreen extends Activity {
    TextView texting;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main_screen);

        texting = (TextView) findViewById(R.id.MyText);

        texting.setText("Test");

    }
}

请执行下列操作:

public class MainScreen extends Activity {
    TextView texting;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main_screen);

        texting = = (TextView) findViewById(R.id.MyText);
        texting.setText("Test");

    };
}

您必须在onCreate方法中初始化TextView对象。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM