本文将为您提供关于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 drawable资源ID冲突?
- Android listview 无法获取资源
- android XML从XML获取资源ID(整数)
- android – ResourceNotFoundException – 字符串资源ID
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应用程序项目.作为一个快速测试/概念证明,我
使用了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库为最终应用程序实现自己的活动.
解决方法
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 无法获取资源
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(整数)
<?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);
解决方法
int test1ResId = R.drawable.test1;
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; }
解决方法
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等更多相关知识的信息可以在本站进行查询。
本文标签: