【问题标题】:setImageResource from generate file pathsetImageResource 从生成文件路径
【发布时间】:2019-05-08 17:53:39
【问题描述】:

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

    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: 无法启动 活动 组件信息{com.example.myapp/com.example.myapp.SecondActivity}: java.lang.NumberFormatException:无效的 int:“R.raw.img1”

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

【问题讨论】:

    标签: android imageview filepath


    【解决方案1】:

    尝试以下:

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

    Source

    【讨论】:

      【解决方案2】:

      这样做:

      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】:

        首先,您不能将“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。

        【讨论】:

          【解决方案4】:

          这是非常简单的代码,对我来说很好用。 您可以直接将 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);
          
              }
          }
          

          谢谢..

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2016-10-16
            • 1970-01-01
            • 2019-08-11
            • 1970-01-01
            • 2016-09-19
            • 2023-04-04
            • 1970-01-01
            相关资源
            最近更新 更多