【问题标题】:How to get drawable name from imageView如何从 imageView 获取可绘制名称
【发布时间】:2017-10-21 12:40:56
【问题描述】:

我有一个在 Activity 打开时创建随机图像的应用。随机图像阵列中有大约 30 张图像。图像已生成,但我想要的是将可绘制名称写入文本视图。它看起来像这样:

    ImageView RImage= (ImageView) findViewById(R.id.image);
    RImage.setImageResource(generator());

    Drawable myDrawable = RImage.getDrawable();

    TextView writeID = (TextView) findViewById(R.id.idtext);
    writeID.setText(String.valueOf(generator()));
}

private int generator() {
    TypedArray imgs = getResources().obtainTypedArray(R.array.list3);
    int imgid = imgs.getResourceId(new Random().nextInt(imgs.length()), -1);
    imgs.recycle();
    return imgid;
}

目前我收到数字,我不知道如何将 int 转换为字符串,或者如何使用生成器生成字符串,显示在 textview 中,然后将其转换为 int 以显示在图像视图。

我创建了另一个活动,我可以在其中从微调器中选择我想看到的图像,它只是在按下按钮时将带有字符串的选定选项发送到下一个活动,并在另一个活动中删除 .png 和 res /drawable/ 从字符串中提取,并将字符串转换为 int 以显示图像。

   Bundle extras = getIntent().getExtras();
    String transportItemChosen = extras.getString("SpinnerValue");
    transportItemChosen = transportItemChosen.replace(".png", "");
    transportItemChosen = transportItemChosen.replace("res/drawable/", "");

    String uri = ("@drawable/" + transportItemChosen);
    int id = getResources().getIdentifier(uri, null, getPackageName());

   ImageView mImageView;
    mImageView = (ImageView) findViewById(R.id.selectedimage);
    mImageView.setImageResource(id);

所以我需要生成器生成字符串,然后将其转换为 int。谢谢!

【问题讨论】:

    标签: java android random


    【解决方案1】:

    通过使用方法将您的int ids 转换为String 名称来更改您的代码

    getResourceEntryName(int id);
    

    换行:

    writeID.setText(String.valueOf(generator()));
    

    类似于:

    writeID.setText(getResources().getResourceEntryName(generator()));
    

    反之亦然:

    如果你有一个String,让我们假设这个String是你从 textView 获得的,或者使用上述方法将其转换回int id,你可以执行以下操作:

    int id= getResources().getIdentifier("your_string_here", "drawable", getPackageName());
    

    如果您是从Fragment 而不是Activity 调用代码,请记住在调用getResources() 或调用getPackageName() 之前放置getActivity()。 我没有在输入时测试过代码,但我确信它会起作用(可能是错字)有关更多信息,请考虑访问资源文档from this official link

    【讨论】:

      【解决方案2】:

      如果我对您的理解正确,您需要查看getResourceName(int) 方法 - 它通过其 ID 返回资源名称。您也可以使用getIdentifier(String,String,String) 方法通过名称检索资源ID。

      如果你想显示随机选取的图片的名称,你应该将生成的资源id保存到变量中,并为其获取对应的资源名称,而不是调用generator()方法两次,因为你会得到两个不同的id。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-09-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-05-30
        • 1970-01-01
        相关资源
        最近更新 更多