2013-02-25 61 views
0

当前我正在为自己的用途开发一个库。我在这个图书馆的课程名为BaseWindow,我的图书馆项目也包括SlidingMenu项目作为图书馆。当我尝试从我的布局文件夹中获得listView时,我收到NullPointerException。我的类的构造是这样的:在库项目中给ListView充气时发生Nullpointer异常

public class BaseWindow extends SlidingFragmentActivity { 

    private String windowTitle; 
    private int menuResourceId; 

    /** 
    * @param layoutResourceId identificator of the layout to inflate(R.layout.your_layout) 
    * @param menuResourceId identification of the menu to inflate(R.layout.your_menu) 
    * @param windowTitle title of this window 
    */ 
    public void InitializeWindow(int layoutResourceId, int menuResourceId, String windowTitle) { 

    ........... 
    ListView lv = (ListView)findViewById(R.id.menu_listview); 

    } 

} 

我知道像这样的东西应该在onCreate方法来完成。但是在外面可以这样做,就像我一样吗?当我拿着我的MousePointer在findViewById方法,它实际引用的方法在我的超

View com.slidingmenu.lib.app.SlidingFragmentActivity.findViewById(int id) 

SlidingFragmentActivity类扩展SherlockFragmentActivity

有谁知道是什么原因导致这个问题?我的是我的lv对象。空值?我如何从这个库类中获得我的ListView?

回答

2

你应该夸大包含menu_listview第一个xml:

LayoutInflater inflater = LayoutInflater.from(context); 

View view = inflater.inflate(R.layout.xml_containing_listview); 

ListView lv = (ListView) view.findViewById(R.id.menu_listview); 

这仅仅是概念,我没有测试此所以它可能无法正常工作。你也需要有一个上下文。

1

setContentView()onCreateactivity的方法非常重要,因为它用于扩充布局并收集其对象中的视图和资源。但是在建立一个单独的类和使用IDS的直接所以有3种方式这样做不会虚增您的布局

1)直接传递列表视图非活动方法的方法

2)充气布局

LayoutInflater inflater = LayoutInflater.from(context); 
View externalView = inflater.inflate(R.layout.your_layout_containing_listview); 
ListView listView = (ListView) externalView .findViewById(R.id.menu_listview); 

3)直接充气的布局和使用它

LayoutInflater mInflater= (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
View externalView = mInflater.inflate(R.layout.your_layout_containing_listview, null); 
ListView listView = (ListView) externalView .findViewById(R.id.menu_listview); 

选择哪些是最适合你的代码

0

可能有几个原因:

  1. InitializeWindow()被称为setContentView()之前,活动不具有布局呢。

  2. Id menu_listview不存在于R.layout.***布局夸大Activity。

  3. 您指的是来自错误包(应用程序vs库)的R