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