繁体   English   中英

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

[英]How to call dialogfragment from another fragment?

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

错误:(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)

顺便说一句,我的代码是片段调用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中

顺便说一下,这是我的输出。 这是调用对话框的片段

这应该是对话

_我真的很感谢您的回答,请对我好一点。我真的不知道该怎么做。 :( 。谢谢 :)

您的错误清楚地说明了您的答案。

类型不匹配

您的dialogFragment具有android.app.FragmentManager并且您正在调用android.support.v4.app.FragmentManager 您应该使用由getFragmentManager(); getSupportFragmentManger() getFragmentManager();

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

import android.support.v4.app.DialogFragment;

并创建此方法。

public static CartFragment newInstance() {
        CartFragment dialog = new CartFragment ();
        return dialog;
    }

并在你的one_fragment中这样使用。

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

版本不匹配。 在使用Fragments的支持库版本时,请使用getSupportFragmentManager()而不是使用getFragmentManager()。

更换

FragmentManager manager = getFragmentManager();

FragmentManager manager = getSupportFragmentManager();

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM