无法通过getIdentifier检索资源

时间:2013-11-05 22:16:48

标签: java android

我的XML中有以下元素

        <EditText
        android:id="@+id/kernelb11"
        android:layout_width="@dimen/matrixBoxWidthHeight"
        android:layout_height="@dimen/matrixBoxWidthHeight"
        android:layout_below="@+id/textViewb"
        android:layout_margin="@dimen/marginOne"
        android:background="@color/white1"
        android:gravity="center"
        android:inputType="numberSigned"
        android:maxLength="2"
        android:text="5" >

        <requestFocus />
    </EditText>

我试图在代码中检索它的价值,如:

String name = "kernelb11";
int a = this.getResources().getIdentifier(name, null, null); // 
String as = (String) this.getResources().getText(a);

但在getIdentifier回复我只是'0'有人可以告诉我为什么吗?

2 个答案:

答案 0 :(得分:1)

请改为尝试:

int a = this.getResources().getIdentifier(name, "id", getPackageName());

正如其他人所指出的那样,这不是最好的方法(虽然,应该有效) 通常,您应该使用findViewById代替。

答案 1 :(得分:1)

如果您在null参数中指定了最后两个参数,则只能name,例如:

String name = "my.package.name:id/kernelb11";

如果您只想使用该名称,则需要这样做:

getIdentifier(name, "id", "my.package.name")

Documentation


然而,这可能不会做你想要的。要从EditText获取字符串,通常应该执行以下操作:

EditText et = (EditText)findViewById(R.id.kernellb11);
String as = et.getText().toString();