Android:将ListActivity添加到TabHost会导致ClassCastException
使用Google提供的示例,我成功地创建了一个TabHostAndroid:将ListActivity添加到TabHost会导致ClassCastException,android,listactivity,android-tabhost,Android,Listactivity,Android Tabhost,使用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 =
// 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);
及
但是,如果尝试将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吗?可以将任何活动添加到TabActivity中,您是否在清单中声明了ListActivity?
你能把TabActivity声明放进去吗?我是这样做的:
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));
}}
公共类ListActivity_1扩展ListActivity{
私有字符串[]mStrings={“项目1”、“项目2”、“项目3”};
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
app=(Application_VarnePoti)getApplication();
setListAdapter(新阵列适配器)(此,
android.R.layout.simple_list_item_1,mStrings));
}}
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));
}}