[英]How to call dialogfragment from another fragment?
I'm really new in android development, hope you guys can help me in my problem. 我真的是android开发的新手,希望你们能为我解决问题。 I had already search for any solution but none of it works.
我已经在寻找任何解决方案,但是都没有用。 I have 6 fragments for scrollable tabs, then each tabs has ADD TO CART buttons, if I click that button a fragment dialog should appear.
我有6个可滚动选项卡的片段,然后每个选项卡都有“添加到购物车”按钮,如果单击该按钮,则会出现一个片段对话框。 In my case, there is this error.
就我而言,有这个错误。
Error:(37, 13) error: no suitable method found for show(android.support.v4.app.FragmentManager,String) method DialogFragment.show(android.app.FragmentManager,String) is not applicable (argument mismatch; android.support.v4.app.FragmentManager cannot be converted to android.app.FragmentManager) method DialogFragment.show(FragmentTransaction,String) is not applicable (argument mismatch; android.support.v4.app.FragmentManager cannot be converted to FragmentTransaction)
错误:(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)
Heres my code by the way for the fragment to call the DialogFragment. 顺便说一句,我的代码是片段调用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");
}
}
This the code for DialogFragment to be called by OneFragment 这是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);
}
}
Seems like the error is in the OneFragment.java 好像错误在OneFragment.java中
Heres my output by the way. 顺便说一下,这是我的输出。
_I really appreciate for any answers, just please be nice to me .I really don't know how to do it . _我真的很感谢您的回答,请对我好一点。我真的不知道该怎么做。 :( .Thanks :)
:( 。谢谢 :)
your error says your answer clearly. 您的错误清楚地说明了您的答案。
type mismatch
类型不匹配
your dialogFragment has android.app.FragmentManager
and you are calling android.support.v4.app.FragmentManager
. 您的dialogFragment具有
android.app.FragmentManager
并且您正在调用android.support.v4.app.FragmentManager
。 you should use getSupportFragmentManger()
insted of getFragmentManager();
您应该使用由
getFragmentManager();
getSupportFragmentManger()
getFragmentManager();
first of all replace your cartFragment import to this, 首先将您的cartFragment导入替换为此,
import android.support.v4.app.DialogFragment;
and create this method. 并创建此方法。
public static CartFragment newInstance() {
CartFragment dialog = new CartFragment ();
return dialog;
}
and in your one_fragment use like this. 并在你的one_fragment中这样使用。
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
CartFragment newFragment = CartFragment .newInstance();
newFragment.show(ft, "My Cart");
There is a version mismatch. 版本不匹配。 Instead of using getFragmentManager(), use getSupportFragmentManager() as you are using the support library version of Fragments.
在使用Fragments的支持库版本时,请使用getSupportFragmentManager()而不是使用getFragmentManager()。
Replace 更换
FragmentManager manager = getFragmentManager();
with 与
FragmentManager manager = getSupportFragmentManager();
your OneFragment
belongs to support library fragment while CartFragment
doesn't. 您的
OneFragment
属于支持库片段,而CartFragment
不属于。 you need to either modify CartFragment
to support library or OneFragment
to default Fragment. 您需要将
CartFragment
修改为支持库,或者将OneFragment
修改为默认的Fragment。 and modifying CartFragment to support library fragment will be better as support library has more functionality. 修改CartFragment以支持库片段会更好,因为支持库具有更多功能。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.