我试图通过使用编程而不是XML布局在onCreate()方法中通过for循环创建一个提交和清除按钮,并且我已经从string.xml定义了按钮的标签文本并分配了它。但是,当我运行它时,应用程序已停止。
我试图隐藏按钮标签设置,它可以作为用户工作(应用程序上显示的2个按钮没有错误),因此我想知道是否不能直接从XML调用字符串标签?或者我错过了这样做的事情。请给我一些评论。
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
TableLayout tableLayout = new TableLayout(this);
tableLayout.setOrientation(TableLayout.VERTICAL);
setContentView(tableLayout);
Button[] buttons = new Button[2];
//button label
buttons[0].setText(R.string.label_calc);
buttons[1].setText(R.string.label_clear);
for(int i=0; i<2; i++) {
buttons[i] = new Button(this);
tableLayout.addView(buttons[i]);
}
}
这是string.xml中的标签设置:
<!-- button label-->
<string name="label_calc">Calc</string>
<string name="label_clear">Clear</string>
当我使用资源字符串时,不确定为什么会发生错误。 我在下面尝试过Joao的建议,但是虚拟设备仍然会出现错误消息“不幸的是,应用程序已经停止。
来自logcat的错误消息如下:
04-26 12:20:27.923 992-992 / com.skcalc.stockcalculator E / AndroidRuntime:FATAL EXCEPTION:main java.lang.RuntimeException:无法启动活动ComponentInfo {com.skcalc.stockcalculator / com.skcalc.stockcalculator.InfoActivity}:java.lang.NullPointerException 引起:java.lang.NullPointerException
我终于修好了,请考虑关闭。 标签在创建对象之前就已解决了这个问题。 感谢
答案 0 :(得分:0)
你必须使用
buttons[0].setText(getResources().getString(R.string.label_calc));
buttons[1].setText(getResources().getString(R.string.label_clear));
使用您在资源中定义的字符串。