我在将按钮添加到我在XML中创建的布局时遇到了问题。这是我的目标:
//some class
else {
startActivity(new Intent(StatisticsScreen.this, ScreenTemperature.class));
}
////
//ScreenTemperatureClass
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//this is where I call another class that
//displays a nice graph
setContentView(new GraphTemperature(getApplicationContext()));
}
我想在这个新屏幕上添加一个按钮,以便它出现在图形下方。
我尝试创建一个 LinearLayout 视图,然后创建一个按钮并将其添加到此视图中,但我只收到 NullPointerException。
任何帮助将不胜感激。谢谢。EDIT#1 以下是我尝试过的可能导致 NullPointerException 和“强制关闭”的代码:
Button buybutton;
LinearLayout layout;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(new GraphTemperature(getApplicationContext()));
layout = (LinearLayout) findViewById(R.id.statsviewlayout);
Button buyButton = new Button(this);
buyButton.setText(R.string.button_back);
buyButton.setLayoutParams(new LayoutParams(
ViewGroup.LayoutParams.WRAP_CONTENT,
ViewGroup.LayoutParams.WRAP_CONTENT));
layout.addView(buyButton);
}
这里是logcat错误信息:
ERROR/AndroidRuntime(293): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.weatherapp/com.weatherapp.ScreenTemperature}: java.lang.NullPointerException
ERROR/AndroidRuntime(293): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2663)
ERROR/AndroidRuntime(293): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)
ERROR/AndroidRuntime(293): at android.app.ActivityThread.access$2300(ActivityThread.java:125)
ERROR/AndroidRuntime(293): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)
显然在logcat中还有更多与此错误相关的行,不知道您是否需要这些内容?
编辑#2
所以我尝试了bhups的方法:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
GraphTemperature GT = new GraphTemperature(getApplicationContext());
layout = (LinearLayout) findViewById(R.id.statsviewlayout);
Button buyButton = new Button(this);
buyButton.setText(R.string.button_back);
buyButton.setLayoutParams(new LayoutParams(
ViewGroup.LayoutParams.WRAP_CONTENT,
ViewGroup.LayoutParams.WRAP_CONTENT));
layout.addView(GT); // line 27
layout.addView(buyButton);
setContentView(layout);
}
使用这种方法时,产生了与上面相同的logcat错误NullPointerException
,表明问题与第27行代码有关,即layout.addView
代码行。 有什么想法吗?再次感谢
screen_temperature.xml
布局并在setContentView()
中使用它。你可以在xml中通过指定整个包而不仅仅是名称来添加自定义视图(例如:<my.package.MyCustomView android:id.../>
)。 - bigstones