嘿伙计我有以下代码。我基本上是在意图中回忆并根据按下的按钮生成一个数字,我想显示某个图像。
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转换成了一个整数字符串?
答案 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);
答案 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);
}
}
谢谢..