setImageResource来自生成文件路径

时间:2013-08-04 13:40:57

标签: android imageview filepath

嘿伙计我有以下代码。我基本上是在意图中回忆并根据按下的按钮生成一个数字,我想显示某个图像。

    Intent intent = getIntent();
    int number = intent.getIntExtra("BUTTON NUMBER", 1);
    ImageView image = (ImageView) findViewById(R.id.imageView);

    String resource = "R.raw.img" + number;
    id = Integer.parseInt(resource);
    image.setImageResource(id);

但是代码似乎没有工作,应用程序崩溃时出现以下错误:

  

E / AndroidRuntime(12872):java.lang.RuntimeException:无法启动   活动   ComponentInfo {com.example.myapp / com.example.myapp.SecondActivity}:   java.lang.NumberFormatException:无效的int:“R.raw.img1”

有什么想法吗?我以为我把alraedy转换成了一个整数字符串?

4 个答案:

答案 0 :(得分:0)

首先,你不能将“R.raw.img1”解析为整数。这就是你在这里获得java.lang.NumberFormatException的原因。

您正在尝试访问ID为“R.raw.img1”的资源 - 这是一个生成的ID。见项目 - > gen - > [packageName] - > R.java。 所以“R.raw.img1”是生成的id(整数)的名称。以您尝试的方式访问整数是不可能的。 试试

int resID = getResources().getIdentifier("img"+number, "raw", getPackageName());

这样你就可以获得正确的身份。

答案 1 :(得分:0)

尝试以下:

int id = getResources().getIdentifier("android.resource://com.example.myapp/raw/img"+number,null,null);
img.setImageResource(id);

Source

答案 2 :(得分:0)

这样做:

Intent intent = getIntent();
int number = intent.getIntExtra("BUTTON NUMBER", 1);
ImageView image = (ImageView) findViewById(R.id.imageView);

int resID = getResources().getIdentifier("img"+number, "raw", getPackageName());
image.setImageResource(resID);

答案 3 :(得分:0)

这是非常简单的代码,对我来说工作正常。     您可以直接将Resource及其id设置为ImageView,如下所示。

 ImageView img=(ImageView) findViewById(R.id.imgView);
        img.setImageResource(R.raw.calendar); 

代码:

package packageName;

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.widget.ImageView;

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        ImageView img=(ImageView) findViewById(R.id.imgView);
        img.setImageResource(R.raw.calendar);

    }
}

谢谢..