2011-03-29 10 views
0

使用Google提供的示例,我成功創建了一個TabHost。Android:添加一個ListActivity到TabHost結果ClassCastException

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

回答

0

可以將任何活動添加到TabActivity中,您是否在清單中聲明瞭ListActivity? 你可以把TabActivity聲明?

1

我這樣做的方式如下:

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