0

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

    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: Invalid int: "R.raw.img1"

有任何想法吗?我以为我已经将字符串转换为整数?

4

4 回答 4

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());

这样你应该得到正确的id。

于 2013-08-04T13:49:58.010 回答
0

尝试以下:

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

资源

于 2013-08-04T13:51:12.177 回答
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);

    }
}

谢谢..

于 2013-08-04T15:03:31.933 回答
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);
于 2013-08-04T13:51:36.693 回答