2013-08-04 80 views
0

嘿家伙我有以下代码。我基本上是在意图回忆并根据按下的按钮生成一个数字,我想要显示某个图像。setImageResource从生成文件路径

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: Unable to start activity ComponentInfo{com.example.myapp/com.example.myapp.SecondActivity}: java.lang.NumberFormatException: Invalid int: "R.raw.img1"

任何想法?我以为我已经allaedy转换成一个整数的字符串?

回答

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。

0

尝试以下操作:

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

Source

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); 
0
**This is very much simple code and is working fine for me. 
You directly can set Resource with its id to an ImageView as shown below.** 

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


Code: 

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

    } 
} 


Thanks..