1

我想问一下为什么我在设置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
4

5 回答 5

0

将 category.setText("Category") 放在 startActivity() 之前

于 2013-10-08T13:31:28.723 回答
0

这无法访问您未在 setContentView 中初始化的其他资源。告诉我你为什么不在同一个布局中使用它?

于 2013-10-08T13:38:57.427 回答
0

正如你所说,它的布局不同。为了访问它,你必须先给它充气。

或者您可以将您的 TextView 移动到 R.layout.beginner 布局中。

于 2013-10-08T13:46:22.437 回答
0

您的 TextView 必须位于您onCreate()使用setContentView(). 你得到NullPointerException是因为你试图找到不属于你布局的视图。

如果您想在布局中添加视图,可以通过编程方式进行。您必须以编程方式创建视图,然后使用yourLayout.addView(textView, params).

克里特视图有两个选项:

  1. 使用其构造函数和方法创建视图。
  2. 使用 膨胀视图LayoutInflater。看到这个答案。但是如果你想这样做,你TextView必须在新的布局中(category_layout.xml)并且它必须是顶级视图(你不必将它放在其他布局中)。
于 2013-10-08T13:49:01.420 回答
0

您正在通过不在您膨胀的初学者布局中的 TextView“ tvCategory ”的 ID 进行引用。为什么加载第二个活动后不这样做?还是默认在 XML 中?

于 2013-10-08T13:50:30.490 回答