Android: добавление ListActivity к TabHost приводит к ClassCastException - PullRequest
0 голосов
/ 29 марта 2011

Используя пример, предоставленный Google, я успешно создал TabHost.

    // Create an Intent to launch an Activity for the tab (to be reused)
    intent = new Intent().setClass(this, SearchListActivity.class);

    // Initialize a TabSpec for each tab and add it to the TabHost
    spec = tabHost.newTabSpec("search").setIndicator("Search",
                      res.getDrawable(R.drawable.icon))
                  .setContent(intent);

    tabHost.addTab(spec);

и

public class SearchListActivity extends ListActivity

Однако, если я пытаюсь добавить ListActivity в TabHost, онприводит к исключению ClassCast:

java.lang.RuntimeException: Unable to start activity
ComponentInfo{com.companyName.appName/com.companyName.appName.MainActivity}:
java.lang.RuntimeException: Unable to start activity
ComponentInfo{com.companyName.appName/com.companyName.appName.SearchListActivity}:
java.lang.ClassCastException: android.app.Application

Не возможно добавить ListActivity в TabHost?

Ответы [ 2 ]

1 голос
/ 25 декабря 2011

Я сделал это следующим образом:

public class ActivityTab extends TabActivity{
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    final TabHost tabHost = getTabHost();

    tabHost.addTab(tabHost.newTabSpec("tab1")
            .setIndicator("Title 1")
            .setContent(new Intent(this, ListActivity_1.class)));

    tabHost.addTab(tabHost.newTabSpec("tab2")
            .setIndicator("Title 2")
            .setContent(new Intent(this, ListActivity_2.class)));
}}

Для классов ListActivity_1 и ListActivity_2 вы просто пишете это:

    public class ListActivity_1 extends ListActivity { 
    private String[] mStrings = {"Item 1", "Item 2", "Item 3"};
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        app = (Application_VarnePoti)getApplication();
        setListAdapter(new ArrayAdapter<String>(this,
                android.R.layout.simple_list_item_1, mStrings));
    }}
0 голосов
/ 29 марта 2011

можно добавить любое действие в TabActivity. Вы объявили ListActivity в манифесте? Вы можете поместить объявление TabActivity?

...