[英]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.