【问题标题】:Error showing support.v7.AppCompatDialogFragment using show() method使用 show() 方法显示 support.v7.AppCompatDialogFragment 时出错
【发布时间】:2016-02-08 13:21:52
【问题描述】:

我在我的应用中使用 v7 支持 AppCompatDialogFragment

import android.support.v7.app.AppCompatDialogFragment;

public class LoginDialogFragment extends AppCompatDialogFragment {

}

在整个应用程序中,我使用默认的 FragmentFragmentManagerNOT android.support.v4.app.Fragmentadroid.support.v4.app.FragmentManager

import android.app.Fragment;
import android.app.FragmentManager;

现在的问题是我想通过调用方法从 Activity 中显示对话框

public void show(@NotNull android.support.v4.app.FragmentManager manager,
                 java.lang.String tag)

不接受android.app.FragmentManager作为参数。

所以我不能打电话

LoginDialogFragment loginDialogFragment = new LoginDialogFragment();
loginDialogFragment.show(getFragmentManager(), "tag");

现在如何显示对话框?

【问题讨论】:

    标签: android android-support-library appcompatdialogfragment


    【解决方案1】:

    您不能将本机 Fragment 支持与 AppCompatDialogFragment 一起使用。事实上,如果你仔细检查AppCompatDialogFragment 的导入,你会发现它来自支持库。您必须使用getSupportFragmentManager() 而不是getFragmentManager()。喜欢

    loginDialogFragment.show(getSupportFragmentManager(), "tag");
    

    AppCompat* 中的所有内容都来自支持库

    【讨论】:

    • 我的活动只显示getFragmentManager(),不显示getSupportFragmentManager()
    • 让您的Activity 扩展AppCompatActivity。如果它们都共享相同的前缀名称是有原因的?
    • 它已经在扩展android.support.v7.app.AppCompatActivity。没有这种方法getSupportFragmentManager()
    • 那你为什么用AppCompatDialogFragment.呢?
    • 我不明白为什么这个答案被否决了,事实上对于这个无意义的问题来说,它可能已经是一个太好的答案了......
    【解决方案2】:

    试试这个:

    public void show(@NotNull android.app.FragmentManager manager, java.lang.String tag)
    

    【讨论】:

      猜你喜欢
      • 2014-12-17
      • 1970-01-01
      • 2021-12-23
      • 2019-11-20
      • 2014-08-04
      • 1970-01-01
      • 2014-04-19
      • 1970-01-01
      • 2023-02-25
      相关资源
      最近更新 更多