在Android Studio中的Activity的方法中,将文本从XML调用到手动创建的对象

时间:2015-04-26 08:02:05

标签: android xml

我试图通过使用编程而不是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

我终于修好了,请考虑关闭。 标签在创建对象之前就已解决了这个问题。 感谢

1 个答案:

答案 0 :(得分:0)

你必须使用

buttons[0].setText(getResources().getString(R.string.label_calc));
buttons[1].setText(getResources().getString(R.string.label_clear));

使用您在资源中定义的字符串。