我有一个使用XML定义的图形,并在NavGraph中添加了DialogFragment作为Fragment之一。当我在该导航控制器上使用resId和bundle调用NavController.navigate时,看不到任何对话框显示。有什么方法可以使用DialogFragment而不是标准Fragment?
<fragment
android:id="@+id/noLoginDialog"
android:name="com.ram.view.NoLoginDialog"
android:label="NoLoginDialog">
<argument
android:name="argTitle"
android:defaultValue="null"
app:type="string"/>
<argument
android:name="argBody"
android:defaultValue="null"
app:type="string"/>
<argument
android:name="argButton"
android:defaultValue="null"
app:type="string"/>
</fragment>
我的动作定义如下
<container_fragment
android:id="@+id/homeFragment"
android:name="com.ram.home.HomeFragment"
android:label="HomeFragment">
<action
android:id="@+id/action_homeFragment_to_noAuthAlertDialog"
app:destination="@id/noLoginDialog"/>
</container_fragment>
我其他带有活动和片段的动作都很好。
答案 0 :(得分:0)
哼,导航库将永远不会打开“片段作为对话框”,它只会将第一个(家庭目标)替换为NavHostFragment中的其他目标。
Google说:
目的地是您可以在应用中导航到的任何位置。而 目的地通常是代表特定屏幕的片段。
请提供更多信息,例如您的导航代码(java / kotlin)。
阅读此Google官方帖子,以了解有关导航的更多信息: https://developer.android.com/topic/libraries/architecture/navigation/navigation-implementing
答案 1 :(得分:0)
是的,您可以从导航中调用DialogFragment,您只需明确告知导航您将使用对话框
class ParentTagSerializer(serializers.ModelSerializer):
def to_representation(self, value):
serializer_data = TagSerializer(value).data
return serializer_data
class Meta:
model = Tag
fields = "__all__"
class TagSerializer(serializers.HyperlinkedModelSerializer):
parent = ParentTagSerializer()
class Meta:
model = Tag
fields = ["name", "aliases", "parent"]
extra_kwargs = {"aliases": {"validators": []}}