0

我正在做一个屏幕,我将有 5 个按钮,这些按钮都将来自其他布局。其他布局只是定义的按钮。所以当我调用初始化第一个按钮并设置它的文本时: Button button = (Button) findViewById(R.layout.layout_for_button); button.setText("text"); 所以它会为按钮抛出 NullPointerException 。这很奇怪,它在第一次调用按钮时就这样做了,我必须再使用 5 个布局。

4

4 回答 4

2

您得到 是NullPointerException因为findViewById找不到 ID 等于 layout-Id 的按钮。要找到您的按钮,您必须做两件事:

  • 在 Layout-XML 中,给按钮一个唯一的 id android:id="@+id/yourbutton"。然后你得到你的按钮findViewById(R.id.yourbutton)
  • findViewById在正确的上下文中调用from 。通常上下文是您正在Activity编码的内容findViewById
于 2013-09-18T08:15:29.743 回答
1

您需要检查 R.id不在R.layoutfindviewById 内

所以这样做

 Button button = (Button) findViewById(R.id.buttonID);
 button.setText("text");

其中buttonID来自按钮的布局 xml android:id="@+id/buttonID"

于 2013-09-18T08:22:18.937 回答
0

Android 基本按钮示例:

资源/布局/main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <Button
        android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Button - Go to mkyong.com" />
 </LinearLayout>

MyAndroidAppActivity.java

import android.app.Activity;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.widget.Button;
import android.view.View;
import android.view.View.OnClickListener;

public class MyAndroidAppActivity extends Activity {

    Button button;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        button = (Button) findViewById(R.id.button1);

        button.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View arg0) {

            // Do something

            }

        });

    } 
}

资源

于 2013-09-18T08:55:16.310 回答
-1

这是安静的简单

Button button = (Button) findViewById(R.layout.layout_for_button); 
button.setText("text");

在您上面的代码中,按钮为空

有问题findViewById(R.layout.layout_for_button)

可能是您从上下文中调用findViewById

于 2013-09-18T08:13:08.887 回答