ListActivity不会显示

时间:2011-10-15 03:36:07

标签: java android xml android-activity

在以下应用程序中,选项卡将正确显示,但我无法确定列表视图未显示的原因。任何有关帮助的想法。它没有崩溃但我得到一个错误代码:任何帮助将不胜感激。

10-14 20:27:32.728: ERROR/AndroidRuntime(1592): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.dana/com.dana.DanaHillsActivity}: java.lang.RuntimeException: Unable to start activity ComponentInfo{com.dana/com.dana.RSSView}: java.lang.RuntimeException: Your content must have a ListView whose id attribute is 'android.R.id.list'

要启动的类代码:

public class RSSView extends ListActivity {

    private static RssListAdapter adapter;

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);


        List<JSONObject> jobs = new ArrayList<JSONObject>();
        try {
            jobs = RssReader.getLatestRssFeed();
        } catch (Exception e) {
            Log.e("RSS ERROR", "Error loading RSS Feed Stream >> " + e.getMessage() + " //" + e.toString());
        }


        Log.d("id", "log this");
        adapter = new RssListAdapter(this,jobs);
        setListAdapter(adapter);


        setContentView(R.layout.rssview1);



    }
}

主要代码:

public class DanaHillsActivity extends TabActivity {


    public static TabHost tabHost; 

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        tabHost = (TabHost)findViewById(android.R.id.tabhost);

        TabSpec firstTabSpec = tabHost.newTabSpec("tid1");
        TabSpec secondTabSpec = tabHost.newTabSpec("tid1");
        TabSpec thirdTabSpec = tabHost.newTabSpec("tid1");
        /** TabSpec setIndicator() is used to set name for the tab. */
        /** TabSpec setContent() is used to set content for a particular tab. */



        firstTabSpec.setIndicator("1").setContent(new Intent(this,RSSView.class));
        secondTabSpec.setIndicator("2").setContent(new Intent(this,RSSView.class));
        thirdTabSpec.setIndicator("3").setContent(new Intent(this,RSSView.class));

        /** Add tabSpec to the TabHost to display. */
        tabHost.addTab(firstTabSpec);
        tabHost.addTab(secondTabSpec);
        tabHost.addTab(thirdTabSpec);
    }
}

Main .xml:

<?xml version="1.0" encoding="utf-8"?>

<TabHost android:layout_width="fill_parent"
    android:layout_height="fill_parent" xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@android:id/tabhost">
    <LinearLayout android:id="@+id/LinearLayout01"
      android:orientation="vertical" android:layout_height="fill_parent"
        android:layout_width="fill_parent">
        <TabWidget android:id="@android:id/tabs"
         android:layout_height="wrap_content" android:layout_width="fill_parent"></TabWidget>
        <FrameLayout android:id="@android:id/tabcontent"
            android:layout_height="fill_parent" android:layout_width="fill_parent"></FrameLayout>
    </LinearLayout>
</TabHost>

rssview1.xml代码:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="fill_parent"
    android:layout_height="fill_parent" android:background="@drawable/wallpaper">

    <!-- List view -->
    <ListView android:id="@+id/android:list" android:layout_width="fill_parent"
        android:layout_height="wrap_content" android:dividerHeight="0px"
        android:divider="#00000000" />  

</RelativeLayout>

3 个答案:

答案 0 :(得分:0)

您的setContentView(R.layout.rssview1);需要在设置列表适配器的行之前。尝试在setContentView(R.layout.rssview1);

之后放置super.onCreate(savedInstanceState);

答案 1 :(得分:0)

如果您使用的是List actvity,则无需设置setContentView(R.layout.layout_name); 删除它。我认为您的列表已创建但未显示,因为您的布局会覆盖此视图。  所以一旦删除该行setContentView(R.layout.layout_name);

答案 2 :(得分:0)

您正在扩展ListActivity,因此您无需从xml中获取任何列表视图。

你可以获得像this

这样的listview对象

并使用它来设置适配器。