2011-10-28 8 views
0

私のプロジェクトでは、画像の1つのファイル名をプログラム的に操作していくつかの画像ファイルを表示しようとしています。R.id.imageからandroidの文字列へ

つまり、私が持っている可能性があります filename.jpg、filename_top.jpg、filename_middle.jpg

私は描画可能なint型の入力を受け取り、このファイル名を操作する前に、表示された画像のファイル名を見つけようとしようとしていますプログラムで生成されたファイル名を表示する。問題は、操作されたファイル名が表示されないことです。 すなわちこれには何か問題があります: imageView2.setImageResource(getImageId(this、namebottom));

setImageResourceを正しく動作させるためにgetImageIdを変更する方法はありますか?

のコードは次のようになります。

public void onCreate(Bundle savedInstanceState) { 
super.onCreate(savedInstanceState); 

Bundle bun = getIntent().getExtras(); 
int imagenumber = bun.getInt("imagenumber"); 
String extension = bun.getString("extension"); 
// int become a val from 0 to 20 (array size) 
setContentView(R.layout.clickeditem); 

final int[] imgIds = new int[{ 
R.drawable.image0,R.drawable.image1,R.drawable.image2,,,R.drawable.image20}; 

//The first image with id top in the layout is set ok: 
ImageView imageView1 = (ImageView)findViewById(R.id.top); 
imageView1.setImageResource(imgIds [ imagenumber ]); 
// problem here: 
//try to get the name of this file: ie: filename.jpg 
//  and then manipulate the filename: 
String name = imageView1.getResources().getString(R.id.image0); 
//try to convert this to the filename_middle.jpg   
String namemiddle = name.replace(".jpg", "_middle.jpg"); 
imageViewt.setImageResource(getImageId(this, namemiddle)); 

//try to convert this to filename_bottom.jpg 
String namebottom = name.replace(".jpg", "_bottom.jpg"); 
imageView2.setImageResource(getImageId(this, namebottom)); 
} 

//where getImageId is defines as follows: 
public static int getImageId(Context context, String imageName) 
{ 
return context.getResources().getIdentifier("drawable/" + imageName, 
null, context.getPackageName()); 
} 

答えて

1
return context.getResources().getIdentifier("drawable/" + imageName, 
null, context.getPackageName()); 

それは識別子とタグの私の理解を手伝ってくれました

return context.getResources().getIdentifier(imageName, 
"drawable", context.getPackageName()); 
+0

こんにちは、返信用のおかげで、これを置き換えるを。しかし、まだ問題が残っていました。 上記のコードで何が問題だったのかは、.jpgを関数に渡していたことでした。 'get_dentifier(" drawable/"+ imageName、null、context.getPackageName()); は正しく動作しますが、ファイル名を指定しないでください。 。(すなわちimagenameの= filename_top filename_middle等...ないfilename_top.jpg等...など コールは次のとおりです。 を 'imageViewm.setImageResource(getImageId(これ、NAMEM));' 他の人にうまくいけば便利。 –