使用 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);
...
}
}
我正在尝试使用以下代码获取图像的 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);
...
}
}