GVKun编程网logo

Android,从字符串获取资源ID?(android获取字符串长度)

15

本文将为您提供关于Android,从字符串获取资源ID?的详细介绍,我们还将为您解释android获取字符串长度的相关知识,同时,我们还将为您提供关于Androiddrawable资源ID冲突?、An

本文将为您提供关于Android,从字符串获取资源ID?的详细介绍,我们还将为您解释android获取字符串长度的相关知识,同时,我们还将为您提供关于Android drawable资源ID冲突?、Android listview 无法获取资源、android XML从XML获取资源ID(整数)、android – ResourceNotFoundException – 字符串资源ID的实用信息。

本文目录一览:

Android,从字符串获取资源ID?(android获取字符串长度)

Android,从字符串获取资源ID?(android获取字符串长度)

我需要将资源ID传递给我的一个类中的方法。它既需要使用引用指向的id,也需要使用字符串。我应该如何最好地做到这一点?

例如:

R.drawable.icon

我需要获取它的整数ID,但是我还需要访问字符串“ icon”。

如果我只需要传递给该方法的是“ icon”字符串,那将是更好的选择。

答案1

小编典典

我不知道那个Resources.getIdentifier()存在。

在我的项目中,我使用以下代码来做到这一点:

public static int getResId(String resName, Class<?> c) {    try {        Field idField = c.getDeclaredField(resName);        return idField.getInt(idField);    } catch (Exception e) {        e.printStackTrace();        return -1;    } }

这样将用于获取R.drawable.icon资源整数值的值

int resID = getResId("icon", R.drawable.class); // or other resource class

我刚刚找到了一篇博客文章,说这Resources.getIdentifier()比像我那样使用反射要慢

Android drawable资源ID冲突?

Android drawable资源ID冲突?

我已经将ZXing 1.7的/ android项目设置为引用的库
通过我的主要 Android应用程序项目.作为一个快速测试/概念证明,我
使用了CaptureActivity,方法与此处描述的相同:
http://damianflannery.wordpress.com/2011/06/13/integrate-zxing-barcod …

大多数情况下,事情都很顺利,我可以启动CaptureActivity并接收
启动它的我的活动中的扫描数据.但是,我得到了一些
真的很奇怪的行为,我认为可能与资源ID有关
我的项目和/ android ZXing项目之间存在冲突.这个
我会采取一些解释,请耐心等待……

我使用以下代码启动CaptureActivity:

Button scanBtn = (Button)findViewById(R.id.mainmenu_btn_scan); 
scanBtn.setonClickListener( 
    new View.OnClickListener() 
{ 
    public void onClick(View v) 
    { 
        Intent i = new Intent("com.google.zxing.client.android.SCAN"); 
        i.putExtra("SCAN_MODE","QR_CODE_MODE"); 
        startActivityForResult(i,SCAN_CODE); 
    } 
});

mainmenu_btn_scan在menu.xml中定义:

<LinearLayout android:id="@+id/mainmenu_view"xmlns:android="http://schemas.android.com/apk/res/android">
    ...
    <Button android:id="@+id/mainmenu_btn_scan" 
                    android:drawabletop="@drawable/btn_scan_drawable"android:text="Scan"/>
    ... 
</LinearLayout>

btn_scan_drawable.xml在/ drawable中,是一个可绘制的选择器:

<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:drawable="@drawable/scan_btn_pressed" android:state_focused="true" android:state_pressed="true" /> 
    ...
</selector>

困扰的问题是:当我把手机放在一个景观中时
方向并启动CaptureActivity,我看到了scan_btn_pressed
图像在显示屏上伸展,另一个副本也是如此
拉伸“将条形码放在取景器矩形内
text …“.这只有在我按住时启动活动时才会发生
手机在横向方向.

我发现如果我更换

android:drawabletop="@drawable/btn_scan_drawable"

android:drawabletop="@drawable/scan_btn_pressed"

问题消失了,一切都运行良好,但我想让它与选择器一起工作(并理解问题发生的原因).怎么可以从我的
活动的UI神秘地出现在另一个活动中?我是Android开发的新手,但我一直在谷歌上搜索并整天处理这个问题,我似乎无法找到为什么会发生这种情况,除了对android文档中的资源ID冲突的一些模糊引用.

注意:我只使用CaptureActivity作为快速原型/概念验证.我将利用ZXIng库为最终应用程序实现自己的活动.

解决方法

好吧,看起来Android平台在使用库项目时有一些皱纹.我注意到我的项目的R类和ZXIng库项目的R类在整个地方都是冲突的,例如

public static final class id {
    ...
    public static final int mainmenu_btn_scan=0x7f070028;
    ...

在图书馆项目的R类中:

public static final class id {
    ...
    public static final int share_app_button=0x7f070028;
    ...

这解释了我的活动中的UI元素是如何被库项目中的活动拾取的. Android将优先考虑主项目中的资源ID.

这篇优秀的文章给出了解决方案:http://blog.blackmoonit.com/2010/12/android-sharing-resources-in-eclipse.html

在CaptureActivity(我在库中调用的活动)中,我替换了

viewfinderView = (ViewfinderView) findViewById(R.id.viewfinder_view);

有了这个

viewfinderView = (ViewfinderView) findViewById(
    getResources().getIdentifier("viewfinder_view","id",getPackageName()) );

这解决了这个问题,虽然我需要通过getIndentifier()替换所有直接id引用,以确保没有任何其他冲突.不是理想的解决方案.感觉应该对aapt工具进行一些相当直接的扩展,以确保R类之间的ID不会发生冲突.

有关详细信息,请参阅此处:http://devmaze.wordpress.com/2011/05/22/android-application-android-libraries-and-jar-libraries/

Android listview 无法获取资源

Android listview 无法获取资源

for(int i=0;i<8;i++){
    map=new HashMap<String, String>();
    map.put("item", items1[i]);
    table.add(map);
}

items1里面的数据为什么会无法获取?????

android XML从XML获取资源ID(整数)

android XML从XML获取资源ID(整数)

我有一个 XML文件:

<?xml version="1.0" encoding="UTF-8"?>
<locations>
<location index="0" asset="@drawable/test1"></location>
</locations>

当我解析XML并尝试检索ResourceID时,它不会返回

int ResourceID = xmlParser.getAttributeIntValue(null,"asset",0);

正在成功检索XML中的所有其他值…我做错了什么?

编辑:我想通了,我不想只是抓住一个Int

代替

int ResourceID = xmlParser.getAttributeIntValue(null,0);

它的

int ResourceID = xmlParser.getAttributeResourceValue(null,0);

解决方法

您实际上不需要使用XML文件来获取drawable的资源ID.在编译时,编写’R.java’文件,其中包含资源ID和实际资源之间的映射.要获取资源ID,只需使用:

int test1ResId = R.drawable.test1;

android – ResourceNotFoundException – 字符串资源ID

android – ResourceNotFoundException – 字符串资源ID

07-25 10:15:37.960: E/AndroidRuntime(8661): android.content.res.Resources$NotFoundException: String   resource ID #0x7
07-25 10:15:37.960: E/AndroidRuntime(8661): at android.content.res.Resources.getText(Resources.java:230)

大家好日子.

我试图在文本视图中显示一个整数值,上面的错误显示在LogCat中.

关于这个问题还有其他类似的帖子;像this,this和this,但没有一个解决方案适合我.

关于问题可能是什么的任何其他想法?

编辑代码:

private static Button btnCancel;
private static Button btnConfirm;

@Override
protected void onCreate(Bundle savedInstanceState) 
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    txtRoomNumber = (EditText)findViewById(R.id.txtRoomNumber);
    btnCancel = (Button)findViewById(R.id.btnCancel);
    btnConfirm = (Button)findViewById(R.id.btnConfirm);

    btnCancel.setonClickListener(new View.OnClickListener()
    {
        @Override
        public void onClick(View v) 
        {
            finish();
            System.exit(0);

        }
    });

    btnConfirm.setonClickListener(new View.OnClickListener()
    {       
        @Override
        public void onClick(View v) 
        {
            int rmNo = getRoomNumberValue();
            txtTesting.setText(rmNo);
        }
    });
}

private int getRoomNumberValue()
{
    int temp = 0;
    try
    {
        temp = Integer.parseInt(txtRoomNumber.getText().toString());
    }
    catch(Exception e)
    {
        e.printstacktrace();
    }

    return temp;
}

解决方法

如果您尝试在TextView中显示整数值,请使用以下命令:
myTextView.setText("" + 1);    // Or whatever number

发生错误是因为TextView有另一种方法:setText(int resid).此方法查找资源ID,在您的情况下不存在. Link

今天关于Android,从字符串获取资源ID?android获取字符串长度的介绍到此结束,谢谢您的阅读,有关Android drawable资源ID冲突?、Android listview 无法获取资源、android XML从XML获取资源ID(整数)、android – ResourceNotFoundException – 字符串资源ID等更多相关知识的信息可以在本站进行查询。

本文标签: