简体   繁体   中英

ListActivity Won't Display

In the following app the tabs will show correctly but I can't determine why the list view doesn't show. Any ideas on to help. It doesn't crash but I do get an error code: Any help would be greatly appreciated.

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'

Class to be launched code:

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);



    }
}

Main Code:

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 code:

<?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>

Your setContentView(R.layout.rssview1); needs to come before the lines that set the list adapter. Try placing setContentView(R.layout.rssview1); after super.onCreate(savedInstanceState);

If you are using List actvity then no need of setting setContentView(R.layout.layout_name); remove it.I think your list is created but it not showing because your layout overwrite this view. so once remove that line setContentView(R.layout.layout_name);

You are extending ListActivity so you dont need to take any listview from the xml.

you can get listview object like this

and use that to set adapter.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM