繁体   English   中英

更改Textview时出错?

[英]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)将其添加到布局中。

您可以使用以下两种方法创建视图:

  1. 使用其构造函数和方法创建视图。
  2. 使用LayoutInflater膨胀视图。 看到这个答案 但是,如果要执行此操作,则TextView必须位于新布局(category_layout.xml)中,并且必须是顶层视图(不必将其置于其他布局中)。

您正在通过TextView“ tvCategory ”的ID进行引用,该引用不在您被夸大的初学者布局中。 为什么在第二个活动加载后不执行此操作? 或默认情况下在XML中?

暂无
暂无

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

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