Java 如何从另一个片段调用dialogfragment?

Java 如何从另一个片段调用dialogfragment?,java,android,android-alertdialog,Java,Android,Android Alertdialog,我是android开发的新手,希望你们能帮我解决这个问题。我已经在寻找任何解决方案,但没有一个有效。 我有6个可滚动选项卡的片段,然后每个选项卡都有“添加到购物车”按钮,如果我单击该按钮,应该会出现一个片段对话框。在我的例子中,有这个错误 错误:(37,13)错误:找不到适合显示的方法(android.support.v4.app.FragmentManager,字符串) 方法DialogFragment.show(android.app.FragmentManager,字符串)不适用 (参数不

我是android开发的新手,希望你们能帮我解决这个问题。我已经在寻找任何解决方案,但没有一个有效。 我有6个可滚动选项卡的片段,然后每个选项卡都有“添加到购物车”按钮,如果我单击该按钮,应该会出现一个片段对话框。在我的例子中,有这个错误

错误:(37,13)错误:找不到适合显示的方法(android.support.v4.app.FragmentManager,字符串) 方法DialogFragment.show(android.app.FragmentManager,字符串)不适用 (参数不匹配;android.support.v4.app.FragmentManager无法转换为android.app.FragmentManager) 方法DialogFragment.show(FragmentTransaction,String)不适用 (参数不匹配;android.support.v4.app.FragmentManager无法转换为FragmentTransaction)

下面是我的代码,让片段调用DialogFragment

package info.androidhive.materialtabs.fragments;

    import android.app.DialogFragment;
    import android.os.Bundle;
    import android.support.v4.app.Fragment;
    import android.support.v4.app.FragmentActivity;
    import android.support.v4.app.FragmentManager;
    import android.support.v4.app.FragmentTransaction;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.ViewGroup;

    import info.androidhive.materialtabs.R;


public class OneFragment extends Fragment{

public OneFragment() {
    // Required empty public constructor
}

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    // Inflate the layout for this fragment
    return inflater.inflate(R.layout.fragment_one, container, false);
}

public void toDiagCartFragment(View v){
    FragmentManager manager = getFragmentManager();
    CartFragment cart = new CartFragment();
    cart.show(manager, "My Cart");
}

}
这是OneFragment调用DialogFragment的代码

package info.androidhive.materialtabs.fragments;

  import android.app.DialogFragment;
  import android.os.Bundle;
  import android.support.annotation.Nullable;
  import android.support.v4.app.Fragment;
  import android.support.v4.app.FragmentActivity;
  import android.support.v4.app.FragmentManager;
  import android.support.v4.app.FragmentTransaction;
  import android.view.LayoutInflater;
  import android.view.View;
  import android.view.ViewGroup;

  import info.androidhive.materialtabs.R;


 public class CartFragment extends DialogFragment{

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    return inflater.inflate(R.layout.fragment_cart2, null);
}
}
似乎错误在OneFragment.java中

顺便说一下,这是我的输出。

_我真的很感激你的回答,只是请对我好一点 1.我真的不知道怎么做(
.谢谢:)

你的错误清楚地说明了你的答案

类型不匹配

您的dialogFragment具有
android.app.FragmentManager
,您正在调用
android.support.v4.app.FragmentManager
。您应该使用
getSupportFragmentManager()
而不是
getFragmentManager()

首先,将您的cartFragment导入替换为

import android.support.v4.app.DialogFragment;
并创建此方法

public static CartFragment newInstance() {
        CartFragment dialog = new CartFragment ();
        return dialog;
    }
在你的一个片段中,用这个

FragmentTransaction ft = getSupportFragmentManager().beginTransaction();            
CartFragment newFragment = CartFragment .newInstance();
newFragment.show(ft, "My Cart");

存在版本不匹配。不要使用getFragmentManager(),而是使用getSupportFragmentManager(),因为您正在使用片段的支持库版本

替换

FragmentManager manager = getFragmentManager();


您的
OneFragment
属于支持库片段,而
cartframent
不属于。您需要修改
CartFragment
以支持库,或者将
OneFragment
修改为默认片段。而修改CartFragment以支持库片段会更好,因为支持库具有更多功能。

\u如何修改我的CartFragment以支持库片段?替换
import android.app.DialogFragment使用
导入android.support.v4.app.DialogFragment
CartFragment.java
\如果我将其更改为该值,它将更改为另一个错误错误:(37,13)错误:找不到适合show的方法(android.support.v4.app.FragmentManager,String)方法DialogFragment.show(android.app.FragmentManager,String)不适用(参数不匹配;android.support.v4.app.FragmentManager无法转换为android.app.FragmentManager)方法DialogFragment.show(FragmentTransaction,String)不适用(参数不匹配;android.support.v4.app.FragmentManager无法转换为FragmentTransaction)的可能重复
FragmentManager manager = getSupportFragmentManager();