ListActivity не будет отображаться - PullRequest
0 голосов
/ 15 октября 2011

В следующем приложении вкладки будут отображаться правильно, но я не могу определить, почему представление списка не отображается. Любые идеи о том, чтобы помочь. Он не падает, но я получаю код ошибки: любая помощь будет принята с благодарностью.

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 голосов
/ 15 октября 2011

Если вы используете List actvity, тогда нет необходимости устанавливать setContentView(R.layout.layout_name); удалить его. Я думаю, что ваш список создан, но он не отображается, потому что ваш макет перезаписывает это представление.так что однажды удалите эту строку setContentView(R.layout.layout_name);

0 голосов
/ 15 октября 2011

Вы расширяете ListActivity, поэтому вам не нужно брать какой-либо просмотр списка из xml.

Вы можете получить объект списка, например this

и используйте его для установки адаптера.

0 голосов
/ 15 октября 2011

Ваш setContentView(R.layout.rssview1); должен находиться перед строками, которые устанавливают адаптер списка. Попробуйте разместить setContentView(R.layout.rssview1); после super.onCreate(savedInstanceState);

...