我正在升级旧项目,以使用最新的android api,gradle构建等...并且我在Android Manifest中遇到了这个问题。
我有一些活动设置如下:
<activity
android:name="com.company.name.ui.ColorPickerActivity"
android:label="@string/title_activity_add_photo_library"
android:parentActivityName="com.compant.name.ui.CaptureMenuFragment"
android:screenOrientation="portrait"
android:theme="@style/FullscreenTheme">
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value="com.company.name.ui.CaptureMenuFragment" />
</activity>
出现错误提示:
Fragment is not assignable to 'android.app.Activity'
参考上面的android:parentActivityName。应该是什么呢?它在以前的目标api设置中工作。
我浏览了一些SO帖子,他们提到将Fragment更改为FragmentActivity,但这会引起其他构建问题,例如我无法在意图实例中使用“ getActivity()
”方法。
例如:Intent intent = new Intent(getActivity(), SearchProductActivity.class);
是否有更好的解决方案?
谢谢!
编辑:
即使与BindingFragmentActivity有关,在我的清单中也显示:
com.company.name.ui.ColorActivity' is not assignable to 'android.app.Activity'
升级到API 28和Android X之后。清单中的这段代码有什么问题:
<activity
android:name="com.company.name.ui.ColorActivity"
android:label="@string/title_activity_color"
android:parentActivityName="com.company.name.ui.ColorsActivity"
android:screenOrientation="portrait"
android:theme="@style/Theme.AppCompat.NoActionBar">
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value="com.company.name.ui.ColorsActivity" />
</activity>
答案 0 :(得分:1)
无需在Android Manifest
文件中声明您的片段。片段是reusable UI component
,可以附加到任何活动。
片段从其父活动中获取与Screen Orientation
,Theme
等相关的属性。
关于将fragment
更改为FragmentActivity
的问题,您仍然可以使用FragmentActivity
中的方法进行访问。
例如:为了获取上下文,getActivity()
可以替换为FragmentActivityName.this
。
您可以详细了解here。
希望这会有所帮助。 谢谢。