我面临的问题在下面的代码中说明。我试图从另一个类调用一个'方法',直到它到达一个活动(如getListView()或getAssets())
致电课程:
public class Main extends Activity {
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Utils ut = new Utils();
ut.initiateMainMenu();
}
}
被叫类(方法:initiateMainMenu):
public class Utils extends ListActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
initiateMainMenu();
}
public void initiateMainMenu() {
listView = getListView();
assetManager = getAssets();
etc...
}
}
在上面的示例中,当使用intent启动第一个类(Main)时,会出现nullpointer。
nullpointer在以下行中给出,具体取决于首先出现的行:
listView = getListView();
assetManager = getAssets();
直接使用类Utils时,不会发生相同的空指针。
我希望上面的描述足以解决我的问题。
亲切的问候, 康拉德
答案 0 :(得分:1)
如果您在主活动中持有列表视图,而不是这样做,这对我来说似乎很奇怪,将列表视图添加到R.layout.main并从ListActivity扩展您的类。您可以摆脱Utils,并在Main中包含所有与listview相关的代码。
或许有关您假装实施的内容的更多信息可能有所帮助......
GER
答案 1 :(得分:0)
解决方案很简单,您的Utils类的上下文永远不会被初始化,即Utils类的onCreate方法永远不会被调用或失焦,或者由于其他原因导致ListView永远不会被初始化。
您可以执行以下操作:
我不知道这会起什么作用,但这个问题背后的基本原因是未初始化的listView导致NULL 。
答案 2 :(得分:0)
我所面临的困难并未完全描述,因为我的Java知识不足以将其识别为问题。
我正在做的是使用三个相互继承的活动。即Activity,MenuActivity(我自己的扩展)和ListActivity。我现在使用的快速而肮脏的解决方案是一个重复的类。一个类包含扩展活动的MenuActivity,另一个类包含扩展 ListActivity 的MenuActivity。