如何在没有dralogfragment实例的情况下显示来自适配器的dialogfragment?

时间:2018-02-02 17:31:49

标签: android android-studio fragment adapter dialogfragment

我需要显示一个dialogfragment来按下适配器上的项目上的按钮,现在我做到了:

Adapter.class

public class AdaptadorEncuesta extends RecyclerView.Adapter<AdaptadorEncuesta.ViewHolder> {

   public class ViewHolder extends RecyclerView.ViewHolder implements 
   View.OnClickListener {

    DialogoGrafica dialogoGrafica = DialogoGrafica.newInstance();      
    dialogoGrafica.show(((Activity)mContext).getSupportFragmentManager());

   }

}

///DialogFragmen.class
public class DialogoGrafica extends DialogFragment {

    public static DialogoGrafica newInstance() {
        return new DialogoGrafica();
    }

}

问题在于:

  

dialogoGrafica.show(((活动)mContext).getSupportFragmentManager());

调用.show()

时适配器中的

我能做什么?

3 个答案:

答案 0 :(得分:0)

我想你需要对DialogoGrafica说你想要展示什么片段。像这样:

showResults

答案 1 :(得分:0)

你可以使用听众

来做到这一点

将此界面添加到适配器AdaptadorEncuesta

public interface OnClickedListener {
    public void onItemClicked();
}

然后适配器构造函数应该看起来像这样

OnClickedListener mListener;
public AdaptadorEncuesta(OnClickedListener listener) {
        mListener = listener;
    }
初始化适配器时

中的活动

AdaptadorEncuesta adapter = new AdaptadorEncuesta(this)  

传递this并实现您活动中的界面

然后当您按下或调用单击适配器时,您将调用方法onClick()并在OnClick()内部,您将调用此类监听器以运行onItemClicked()方法活性

mListener.onItemClicked();

然后您的活动上的方法onItemClicked()将运行您已为其界面执行的工具

现在仍然要在方法

中显示对话框
@Override
public void onItemClicked(View view) {
dialogoGrafica.show(((Activity)mContext).getSupportFragmentManager());
}

答案 2 :(得分:0)

你没有告诉过这个问题,但我认为getSupport没有找到方法异常......

该方法适用于AppCompatActivity而不是Activity。

所以替换为:

((AppCompatActivity)mContext).getSupportFragmentManager()