Android 具有碎片活动的TabHost

Android 具有碎片活动的TabHost,android,android-activity,android-fragments,Android,Android Activity,Android Fragments,类似的问题 我有一个Android应用程序,多年来一直被设置为API级别10。我的最低版本仍然是10,但最高版本现在是21。我已经安装了AndroidV4支持JAR,我正在将所有活动转换为片段活动 因此,我有一个带有选项卡主机的主屏幕。使用以下代码: TabSpec spec = tabHost.newTabSpec("photos") .setIndicator(getString(R.string.Photos),

类似的问题

我有一个Android应用程序,多年来一直被设置为API级别10。我的最低版本仍然是10,但最高版本现在是21。我已经安装了AndroidV4支持JAR,我正在将所有活动转换为片段活动

因此,我有一个带有选项卡主机的主屏幕。使用以下代码:

TabSpec spec = tabHost.newTabSpec("photos")
                      .setIndicator(getString(R.string.Photos),     
                         res.getDrawable(R.drawable.ics_menu_camera));
tabHost.addTab(spec, PhotosActivity.class, null);
PhotoActivity用于扩展
Activity
类,现在扩展
FragmentActivity
类。我只是在应用程序打开时得到一个强制转换错误。唯一的信息是导致演员错误的原因

我尝试将其更改为扩展
片段
(如我引用的链接所示),但几乎每一行代码在PhotoActivity中都变成了一个巨大的错误

PhotoActivity用于扩展Activity类,现在已扩展 FragmentActivity类。当 应用程序打开


之所以发生强制转换异常,是因为FragmentTabHost的add()方法期望的是片段类,而不是扩展活动的类。您不能简单地通过使活动扩展Fragment类来实现简单活动和片段之间的转换,相反,您需要重构当前的类。

add()方法要求类参数是表示片段而不是活动的类。但是几乎每一行代码在PhotoActivity中都变成了一个巨大的错误-你不能简单地将超类从一个活动更改为一个片段,你需要重构活动的当前代码以使其适应一个片段类。这就是我所担心的。一定有某种方法可以在不完全重写的情况下做到这一点。getString()、getBaseContext()、findViewById()、getApplicationContext()、startActivityForResult、super、实例状态,活动类中存在的片段类中绝对不存在任何内容。不,不存在。无论如何,重构毕竟不应该那么难。通过使用
getActivity()
方法(返回片段的绑定活动),您仍然可以使用这些方法。你能把它贴出来作为回答吗?我会接受的?