0

このコードを新しいプロジェクトで使用することに成功しましたが、実際のコードにコピーすると、表示される画像はすべてがうまく作成されたものではありません(画像は描画可能なフォルダーにあり、すべてのデータは適切に宣言されています...)画像は「phoXX」で始まります。XXは整数(0〜62)です。imageview(imageView1という名前)とTextView(デバッグ用、textView1という名前)があり、ID(チェックイン時に適しています)が表示されます。 R.java ...)

これが私のコードです:

private Context mContext;
ImageView  imageC=(ImageView)findViewById(R.id.imageView1);
TextView  Tex=(TextView)findViewById(R.id.textView1);       
Drawable drawableX = this.getResources().getDrawable(android.R.drawable.ic_dialog_alert);
Random random_monster = new Random();
int lerand = random_monster.nextInt(62);
int id = mContext.getResources().getIdentifier("drawable/pho"+lerand, "drawable",mContext.getPackageName());
if (id>0)
{
    drawableX = getResources().getDrawable(id);
}
imageC.setImageDrawable(drawableX);
Tex.setText(Integer.toString(lerand)+":"+id);

つまり、私が言うように、画像が表示され、数字が表示されますが、たとえばpho29はpho48という名前の画像を表示します(そして、pho48はpho29を表示しません)IDは2130837535で、これはR.javaに表示されます。 public static final int pho29 = 0x7f02001f; pho48は:
public static final int pho48 = 0x7f020034;

ある番号では、表示される画像は良いものですが、他の番号では、画像は良いものではありません(そして、同じ番号で常に同じ画像が表示されます....つまり、pho29の場合、常にpho48が表示されます。私の活動のすべてで)

私は本当に私が見逃しているものを理解していません...あらゆる種類の助けのためにすべて

編集:いくつかの一致の下(左側に表示されるはずの番号、右側に表示される番号)

2->6
17->32
19->34
24->41
43->43
51->51
36->55
37->56
38->57
56->56
59->59
61->61

ご覧のとおり、56は56 AND37...で表示されます。

4

2 に答える 2

1

同じコードと画像リソースのセットが1つのプロジェクトで正常に機能し、別のプロジェクトでは機能しない場合は、壊れたプロジェクトでコンパイルされたリソースが実際に正しいかどうかを検討する必要があります。Eclipseで自動ビルド機能を使用しているときに、期待したときにリソースが再コンパイルされないことがわかりました。たとえば、アプリをデプロイする前に最後に行ったのがリソースの変更だったとします。コードファイルの変更を保存すると、ビルドシステムがより困難になるようです。

クリーンアップしてから再構築してみてください。Eclipseで、[プロジェクト]メニューの[クリーン...]を選択し、プロジェクトを選択します(またはプロジェクトをすべてクリーンにします)。その後、Eclipseは完全な再構築を行います。または、コマンドラインで「antclean」を実行してから「antdebug」を実行します。

また、次の行を使用しています。

int id = mContext.getResources().getIdentifier("drawable/pho"+lerand, "drawable",mContext.getPackageName());

API仕様は次のとおりです。

public int getIdentifier (String name, String defType, String defPackage)

defTypeフィールドでタイプを指定しているため、nameフィールドでタイプを指定する必要はありません。私はそれがあなたの問題を解決するとは思わないが、これは少なくとも同様に機能するはずです:

int id = mContext.getResources().getIdentifier("pho"+lerand, "drawable",mContext.getPackageName());
于 2012-11-03T21:20:18.073 に答える
0

ソースのないimageviewを定義に入れてみてください。imageviewのソースがxmlに設定されていて、実行時にドローアブルを変更しても機能しない場合、最初の画像が常に表示されるという問題が発生することがあります。

于 2012-11-03T21:15:26.037 に答える