应用程序强制关闭空指针异常。罪魁祸首是众所周知但没有解决方案

时间:2012-11-19 15:00:55

标签: android android-widget

新手在这里。我很难接受设计,因为我的应用程序只是FC的开始。我想在一个活动中创建一个弹出菜单(带有ListView的PopupWindow),它生成2个XML:一个用于我的活动,一个用于我的虚拟菜单(menu_dummy.xml)。问题代码现在看起来像这样:

...

    mSet = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    mPopup = mSet.inflate(R.layout.menu_dummy, null, false);
    Resources base = getResources();
    ListView m = (ListView)findViewById(R.id.menu_popup);
    String[] items = new String[]{base.getString(R.string.accounts), base.getString(R.string.about)};
    ArrayAdapter<String> lstItems = new ArrayAdapter<String>(this,
              android.R.layout.simple_list_item_1, android.R.id.text1, items);
    m.setAdapter(lstItems);

...

当我执行我的代码时,我发现ListView m(menu_popup,在menu_dummy.xml下)始终返回null,尽管它在我的R.java中注册。我错过了什么吗?

2 个答案:

答案 0 :(得分:0)

替换:

ListView m = (ListView)findViewById(R.id.menu_popup);

使用:

ListView m = (ListView)mPopup.findViewById(R.id.menu_popup);

答案 1 :(得分:0)

我相信你正在给布局充气,但是你没有使用膨胀的布局来获得对m的引用。所以Android试图在当前布局中找到menu_popup,因此返回null。

更改此部分:

ListView m = (ListView)findViewById(R.id.menu_popup);

为:

ListView m = (ListView)mPopup.findViewById(R.id.menu_popup);

现在,您应该获得menu_popup下的menu_dummy的引用,因为您将使用对menu_dummy中存储的虚增mPopup的引用。