DialogFragment 中的 show(FragmentManager, String) 方法不适用于参数 (FragmentTransaction, String)。

6

我有一个与Fragments相关的问题。

我遇到的问题是,我有一个简单的DialogFragment

public class Fragment3 extends DialogFragment  {
private Fragment activity;
ViewGroup root;

static Fragment3 newInstance() {
    Fragment3 f = new Fragment3();
    return f;
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {        
    root = (ViewGroup) inflater.inflate(R.layout.fragment3_layout, container, false);
    return root;
  } 
}  

我想从另一个Fragment创建此碎片。
public class ListViewImageAdapter extends BaseAdapter {

private Fragment activity;
....

public ListViewImageAdapter(Fragment activity, ArrayList<Object> listImages) {
    this.activity = activity;
 ...}

....
FragmentTransaction ft = activity.getFragmentManager().beginTransaction();
Fragment3 newFragment = Fragment3.newInstance();
newFragment.show( ft, "dialog");
....

但是我收到了一条消息:
The method show(FragmentManager, String) in the type DialogFragment is not applicable for the arguments (FragmentTransaction, String)

2
你可能正在混淆导入,一部分可能来自支持库,一部分可能来自框架。 - Blackbelt
2个回答

3
import android.support.v4.app.FragmentActivity;

替代方案:
import android.app.DialogFragment;

(或者反过来)


1
尝试调用newFragment.show(activity.getFragmentManager(), "dialog")而不是newFragment.show(ft, "dialog")。DialogFragment.show()方法的第一个参数应该是FragmentManager而不是FragmentTransaction。请参考tutorial

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接