我有一个int数组。这些整数是图片的资源ID:
final int flags[] = new int[] { R.drawable.argentina, R.drawable.austria ... }
和一个包含图像资源名称的String:
String flag = "R.drawable.argentina";
如何轻松检查标志字符串是否在flags数组中?
当我从数组中检索一个值并为其赋值时,例如:
int flag = flag[0];
这个标志变量将保存一些像2130837665这样的整数,这很明显。 如何从这个数组中检索确切的名称作为字符串,我可以将它与标志字符串?
进行比较答案 0 :(得分:2)
您可以使用
获取资源的名称 String name = getResources().getResourceEntryName(flag]);
这只提供名称,argentina
在您的情况下
您可以通过
获取类型String type = getResources().getResourceTypeName(flag);
这将在您的案例中返回drawable
。所以你可以找到id是否对应于字符串
答案 1 :(得分:1)
使用此代码
public class MainActivity extends Activity {
Button MyTranslateButton;
private int image[];
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
image =new int[]{R.drawable.adv_book,R.drawable.background,R.drawable.bid_active,R.drawable.break_finish};
MyTranslateButton = (Button)findViewById(R.id.TranslateButton);
MyTranslateButton.setOnClickListener(MyTranslateButtonOnClickListener);
}
private Button.OnClickListener MyTranslateButtonOnClickListener
= new Button.OnClickListener(){
@SuppressWarnings("null")
public void onClick(View v) {
for(int i=0 ; i < image.length ; i++){
String names[]=new String[image.length];
String name=getResources().getResourceEntryName(image[i]);
Log.i("Image Names is ",name);
names[i]=getResources().getResourceEntryName(image[i]);
}
}
};
}