如何从片段调用对话框

时间:2018-01-05 05:09:57

标签: java android

当我点击 cardview 对话框时,必须打开。所以这是片段类中的 onClick 方法。

public class Entry_Fragment extends Fragment implements 
View.OnFocusChangeListener, View.OnClickListener {    
public void onClick(View view) {
    if(view == cdAddWork)
    {       
if(actvEntryCategory.getText().toString().trim().equals("Installation")){

          try {
           InstActivityDialog dlg;
           dlg = new InstActivityDialog(getFragmentManager(),getActivity().getApplicationContext());
           dlg.show();//here I am passing this fragment and context as parameters to the constructor in that dialog.

           }catch (Exception e){                   
           }
        }
    }
}
}

这是我的对话类

public class InstActivityDialog extends Dialog {
public InstActivityDialog(FragmentManager fm, Context context) {
    super(context);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
        setContentView(R.layout.installation_dialog); //layout for dialog
        setTitle("Installation Activity");
}
}

当我点击片段中的cardview时,我需要打开对话框。为此在onClick方法中我调用对话框。我想将当前片段和上下文传递给对话框。

fragmentcontext作为参数传递给构造函数时,我犯了什么错误?还在构造函数中接收参数时?

如何将片段和上下文作为参数传递?

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:1)

如果您的对话框没有显示,那么问题就在发生。

 InstActivityDialog  dlg = new InstActivityDialog(getSupportFragmentManager(),getApplicationContext());

Dialog绑定到Activity的Context而不是Aplication Context。所以像下面这样使用它。

 InstActivityDialog  dlg = new InstActivityDialog(getSupportFragmentManager(),getActivity());
    dlg.show();

为了更好地使用FragmentManager实现Dialog,我建议使用DialogFragment