[英]Retrieve Java string from Android drawable resource name
我有一個這樣的可繪制png文件數組:
int[] images = {R.drawable.alabama, R.drawable.alaska, R.drawable.arizona};
currentImage++;
currentImage = currentImage % images.length;
hImageViewPic.setImageResource(images[currentImage]);
我如何獲得這樣的東西:
String imageName = "alabama"
我試過了,但是它返回了我的Image View ID而不是src名稱。
String imageName = getResources().getResourceEntryName(R.id.idImageViewPic);
更新這是我更多的代碼來獲取上下文信息。 我在下面改編了一個答案,但是出現錯誤:不兼容的類型:字符串無法轉換為int。
public class GameFragment extends Fragment {
private AlertDialog mDialog;
private ImageView hImageViewPic;
private Button iButton, gButton;
private int currentImage = 0;
int[] images = {R.drawable.alabama, R.drawable.alaska, R.drawable.arizona};
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_game, container, false);
hImageViewPic = (ImageView) rootView.findViewById(R.id.idImageViewPic);
iButton = (Button) rootView.findViewById(R.id.guess_button);
final EditText responseField = (EditText) rootView.findViewById(R.id.ResponseText);
// Handle buttons here...
View guessButton = rootView.findViewById(R.id.guess_button);
guessButton.setOnClickListener(new View.OnClickListener() {
int score = 0;
@Override
public void onClick(View view) {
AlertDialog.Builder builder =
new AlertDialog.Builder(getActivity());
String response = responseField.getText().toString();
String wrongTextAnnouncement = getString(R.string.wrong_text, response);
int resourceId = images[currentImage];
String name = getResources().getResourceEntryName(resourceId);
hImageViewPic.setImageResource(resourceId);
hImageViewPic.setTag(name);
String imageName = hImageViewPic.getTag(name);
Log.d("UT3", response);
Log.d("UT3", wrongTextAnnouncement);
Log.d("UT3", imageName);
if (imageName != response) {
builder.setTitle(R.string.wrong_title);
builder.setMessage(wrongTextAnnouncement);
builder.setCancelable(false);
builder.setPositiveButton(R.string.ok_label,
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface,
int i) {
// nothing
}
});
mDialog = builder.show();
} else {
builder.setTitle(R.string.right_title);
builder.setMessage(R.string.right_text);
builder.setCancelable(false);
builder.setPositiveButton(R.string.ok_label,
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface,
int i) {
// nothing
}
});
score += 10;
String scoreString = String.valueOf(score);
Log.d("UT3", scoreString);
}
mDialog = builder.show();
currentImage++;
currentImage = currentImage % images.length;
hImageViewPic.setImageResource(images[currentImage]);
}
});
return rootView;
}
您正在接收View的ID,因為您要將View的ID傳遞給
getResourceEntryName(int resid)
如果要獲取String imageName = "alabama"
傳遞給drawable的方法ID,而不是ImageView
但是無法檢查將哪些資源id設置為圖像視圖,因為Drawable是通過傳遞的id創建的。
幸運的是,您可以使用hImageViewPic.setTag(Object object)
稍后再閱讀。
因此,代碼可能類似於:
int[] images = {R.drawable.alabama, R.drawable.alaska, R.drawable.arizona};
currentImage++;
currentImage = currentImage % images.length;
int resourceId = images[currentImage];
String name = getResources().getResourceEntryName(resourceId);
hImageViewPic.setImageResource(resourceId);
hImageViewPic.setTag(name);
稍后,您可以使用以下圖片獲取圖片的名稱: hImageViewPic.getTag()
在我看來,最好使用字符串圖像名稱數組,例如:
String[] imagesTitle = {alabama, alaska,arizona};
然后獲取圖像的ID,例如:
String imageName = imagesTitle[currentImage];
int drawableResourceId = this.getResources().getIdentifier(imageName,"drawable", this.getPackageName())
其中“ this”是一個活動,僅用於闡明。 那么您可以為圖片設置標簽並為imageview設置ID,例如:
hImageViewPic.setImageResource(drawableResourceId);
hImageViewPic.setTag(imageName);
希望對您有所幫助!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.