寻找不存在的布局

时间:2013-02-07 19:12:38

标签: java android view listactivity

如何在以下活动中调用setContentView()?

import android.app.ListActivity;
import android.os.Bundle;
import android.widget.ArrayAdapter;

public class MyListActivity extends ListActivity {
    public void onCreate(Bundle icicle) {
        super.onCreate(icicle);
        String[] values = new String[] { 
            "Android", 
            "iPhone", 
            "WindowsMobile",
            "Blackberry", 
            "WebOS", 
            "Ubuntu", 
            "Windows7", 
            "Max OS X",
            "Linux", 
            "OS/2" };
        ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
            android.R.layout.simple_list_item_1, values);
        setListAdapter(adapter);
    }
}

如您所见,ListActivities不一定需要布局文件;但我已经习惯了(笑)。我有一个需要运行setContentView()的MenuDrawer ...我可以选择任何选项。

谢谢!

3 个答案:

答案 0 :(得分:1)

您可以像调用任何其他Activity一样调用setContentView(),但ListActivities还有一个额外要求:布局必须具有包含此属性的ListView:android:id="@android:id/list"

public class MyListActivity extends ListActivity {
    public void onCreate(Bundle icicle) {
        super.onCreate(icicle);
        setContentView(R.layout.activity_myListActivity);
        ...

答案 1 :(得分:0)

按照MenuDrawer在ListActivitySample发布的示例进行操作。似乎关键是覆盖ListActivity代表您调用的setContentView并将其转发到菜单抽屉中。

以下似乎是关键:

@Override
public void setContentView(int layoutResID) {
    // This override is only needed when using MENU_DRAG_CONTENT.
    mMenuDrawer.setContentView(layoutResID);
    onContentChanged();
}

答案 2 :(得分:0)

我调用了Activity的getListView():

mMenuDrawer.setContentView(getListView());

为什么我总是在发布到StackOverflow之后弄清楚???