[英]Error in Change Textview?
我想问为什么在设置TextView
的文本时出现错误。 我在这里查看初学者布局,但textview在我的游戏布局中。 那可能吗? 这是我的代码:
public class Beginner extends Activity
{
Button beginner1, beginner2;
TextView category;
@Override
protected void onCreate(Bundle MainPage)
{
super.onCreate(MainPage);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.beginner);
beginner1 = (Button) findViewById(R.id.btnBeginner1);
beginner2 = (Button) findViewById(R.id.btnBeginner2);
beginner1.setOnClickListener(myOnlyhandler);
beginner2.setOnClickListener(myOnlyhandler);
category = (TextView) findViewById(R.id.tvCategory);
}
View.OnClickListener myOnlyhandler = new View.OnClickListener(){
@Override
public void onClick(View v)
{
// TODO Auto-generated method stub
switch(v.getId()) {
case R.id.btnBeginner1:
Intent openBeginner = new Intent("com.thesis.logipic.GAMEPLAY");
startActivity(openBeginner);
category.setText("Category");
break;
case R.id.btnBeginner2:
Intent openBeginner2 = new Intent("com.thesis.logipic.GAMEPLAY");
startActivity(openBeginner2);
category.setText("Category");
break;
}
}
};
}
这是我的Logcat中的错误:
10-08 21:26:30.486: D/AndroidRuntime(1019): Shutting down VM
10-08 21:26:30.486: W/dalvikvm(1019): threadid=1: thread exiting with uncaught exception (group=0x4001d800)
10-08 21:26:30.506: E/AndroidRuntime(1019): FATAL EXCEPTION: main
10-08 21:26:30.506: E/AndroidRuntime(1019): java.lang.NullPointerException
10-08 21:26:30.506: E/AndroidRuntime(1019): at com.thesis.logipic.Beginner$1.onClick(Beginner.java:42)
10-08 21:26:30.506: E/AndroidRuntime(1019): at android.view.View.performClick(View.java:2408)
10-08 21:26:30.506: E/AndroidRuntime(1019): at android.view.View$PerformClick.run(View.java:8816)
10-08 21:26:30.506: E/AndroidRuntime(1019): at android.os.Handler.handleCallback(Handler.java:587)
10-08 21:26:30.506: E/AndroidRuntime(1019): at android.os.Handler.dispatchMessage(Handler.java:92)
10-08 21:26:30.506: E/AndroidRuntime(1019): at android.os.Looper.loop(Looper.java:123)
10-08 21:26:30.506: E/AndroidRuntime(1019): at android.app.ActivityThread.main(ActivityThread.java:4627)
10-08 21:26:30.506: E/AndroidRuntime(1019): at java.lang.reflect.Method.invokeNative(Native Method)
10-08 21:26:30.506: E/AndroidRuntime(1019): at java.lang.reflect.Method.invoke(Method.java:521)
10-08 21:26:30.506: E/AndroidRuntime(1019): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
10-08 21:26:30.506: E/AndroidRuntime(1019): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
10-08 21:26:30.506: E/AndroidRuntime(1019): at dalvik.system.NativeStart.main(Native Method)
10-08 21:26:32.466: I/Process(1019): Sending signal. PID: 1019 SIG: 9
将category.setText(“ Category”)放在startActivity()之前
这将无法访问您未在setContentView中对其进行初始化的其他资源。 告诉我为什么不在同一版面中使用它?
如您所说,它的布局不同。 为了访问它,您必须先对其充气。
或者,您可以将TextView移到R.layout.beginner布局中。
您的TextView必须位于您使用setContentView()
在onCreate()
设置的布局中。 之所以收到NullPointerException
是因为您尝试查找不属于布局的视图。
如果要在布局中添加视图,可以通过编程方式进行。 您必须以编程方式创建视图,然后使用yourLayout.addView(textView, params)
将其添加到布局中。
您可以使用以下两种方法创建视图:
LayoutInflater
膨胀视图。 看到这个答案 。 但是,如果要执行此操作,则TextView
必须位于新布局(category_layout.xml)中,并且必须是顶层视图(不必将其置于其他布局中)。 您正在通过TextView“ tvCategory ”的ID进行引用,该引用不在您被夸大的初学者布局中。 为什么在第二个活动加载后不执行此操作? 或默认情况下在XML中?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.