使用 getIdentifier() 查找图像 ID

Using getIdentifier() to Find ID of Image

我正在尝试使用以下代码获取图像的 ID。

 public class MovieActivity extends ActionBarActivity {
        private Context con;
        String name = "test";
        protected void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                con = MovieActivity.this;
                setContentView(R.layout.activity_movie);
            }

    public void updateScreen(){

            int imageResource = con.getResources().getIdentifier("drawable/" + name , null, con.getPackageName());

        }

    }

当我 运行 它时,我得到异常:

java.lang.NullPointerException: Attempt to invoke virtual method 'android.content.res.Resources android.content.Context.getResources()' on a null object reference

我认为问题出在 Context 所以我添加了 con 变量,它在代码 运行s 时获取上下文。我做了一些研究并尝试了另一种方法,但每次都遇到相同的异常。谁能帮我?

编辑:当我在 MainActivity 中使用相同的代码行时,它工作得很好。但在另一个 class 中,它失败了。

public class SomeMovie extends MovieActivity {  }

public class MainActivity extends ActionBarActivity {

     protected void onCreate(Bundle savedInstanceState) {
          SomeMovie movie = new SomeMovie();
          movie.updateScreen();

      }
 }

SomeMovie class 是 MovieActivity class 的子项。我调用那个方法。我调试了代码并注意到当代码进入 updateScreen() 方法时 Context 为空。在activityclasses上使用继承是错误的吗?

改变

int imageResource = con.getResources().getIdentifier("drawable/" + name , null, con.getPackageName());

int imageResource = getResources().getIdentifier("drawable/" + name , null, con.getPackageName());

您已经在 Activity 的上下文中,所以请使用它。 (不需要使用this关键字来引用它)

编辑:

您没有为 SomeMovie Activity 定义布局,因此它的 context 始终是 null。 您必须在其 onCreate 方法中定义 activity 的布局:

public class SomeMovie extends MovieActivity {

     protected void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
          setContentView(R.layout.somemoviexml);
          ...

      }
 }