Android 被调用方法的活动上的空指针(例如活动:getListView或getAssets等)

Android 被调用方法的活动上的空指针(例如活动:getListView或getAssets等),android,android-emulator,Android,Android Emulator,我面临的问题在下面的代码中说明。我试图从另一个类调用一个“方法”,该类在到达某个活动(如getListView()或getAssets())之前一直运行良好 主叫班级: public class Main extends Activity { public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main);

我面临的问题在下面的代码中说明。我试图从另一个类调用一个“方法”,该类在到达某个活动(如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):

在上面的示例中,当第一个类(Main)以意图启动时,就会出现null指针

根据哪一行先到,在以下行上给出空指针:

listView = getListView();
assetManager = getAssets();
当直接使用类Utils时,不会出现相同的null指针

我希望以上描述足以解决我的问题

亲切问候,,
Conrad

如果你在你的主要活动中持有一个列表视图,那么不要这样做,我觉得这很奇怪,而是将列表视图添加到R.layout.main并从ListActivity扩展你的类。您可以去掉UTIL,并将所有与listview相关的代码放在Main中

或者,关于您假装实现的内容的更多信息可能会有所帮助


Ger

解决方案很简单,Utils类的上下文从未初始化,即Utils类的onCreate方法从未调用或失去焦点,或者由于某些其他原因,ListView从未初始化

您可以执行以下操作:

  • 列表的反向调用和保持句柄,可能使用静态关键字
  • 或者可以尝试将代码更改为initiateMainMenu()的getApplicationContext.getListView()/Utils.this.getListView
    我不知道这会起到什么作用,但这个问题背后的基本原因是未初始化的listView导致空值。我所面临的困难没有完全描述,因为我的Java知识不足以确定它是一个问题


    我所做的是使用三个相互继承的活动。即Activity、MenuActivity(我自己的扩展)和ListActivity。我现在使用的快速而肮脏的解决方案是一个重复的类。一个类包含MenuActivity extensingActivity,另一个类包含MenuActivity extensingListActivity

    另请参见下面描述的我自己的解决方案,该解决方案回答了您有关更多信息的请求。主类是在我的代码中扩展MenuActivity来扩展菜单。它还包含一个标题,因此我不能在Main.class上使用ListActivity。因此,我制作了第二页Utils,该页由ListActivity扩展,并启动了一个列表。您的答案中有您的权利,但正如我自己的“答案”中所述,我的问题比我的问题中首先描述的要大一些。也许你可以提出一个想法来制造一个更固体的溶液?
    listView = getListView();
    assetManager = getAssets();