如何在没有 dralogfragment 实例的情况下从适配器显示对话框片段?

Posted

技术标签:

【中文标题】如何在没有 dralogfragment 实例的情况下从适配器显示对话框片段?【英文标题】:how show a dialogfragment from adapter without dralogfragment instance? 【发布时间】:2018-07-13 06:25:06 【问题描述】:

我需要显示一个对话框片段来按下适配器中某个项目上的按钮,现在我这样做了:

适配器类

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(((Activity)mContext).getSupportFragmentManager());

在适配器中调用.show()

我能做什么?

【问题讨论】:

【参考方案1】:

我认为您需要向 DialogoGrafica 说明您想要展示的片段。像这样的:

((Activity)mContext).getSupportFragmentManager().findFragmentByTag("Your Fragment Name")

【讨论】:

【参考方案2】:

你可以通过使用监听器来做到这一点

将此接口添加到您的适配器AdaptadorEncuesta

public interface OnClickedListener 
    public void onItemClicked();

然后适配器构造函数应该是这样的

OnClickedListener mListener;
public AdaptadorEncuesta(OnClickedListener listener) 
        mListener = listener;
    

在初始化适配器时的活动中

AdaptadorEncuesta adapter = new AdaptadorEncuesta(this)  

通过this 并在您的活动中实现接口

然后,当您在适配器中按下或调用 click 时,您将调用方法 onClick() 并在 OnClick() 内调用监听器以在活动中运行 onItemClicked() 方法

mListener.onItemClicked();

然后你的活动上的方法onItemClicked()将运行你已经为他的接口做的实现

现在仍然显示方法内的对话框

@Override
public void onItemClicked(View view) 
dialogoGrafica.show(((Activity)mContext).getSupportFragmentManager());

【讨论】:

【参考方案3】:

你没有告诉问题,但我想它是 getSupport 没有找到方法的异常......

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

所以替换为:

((AppCompatActivity)mContext).getSupportFragmentManager()

【讨论】:

@Maniraj 如果你不使用 AppCompatActivity 你应该改用((Activity)mContext).getFragmentManager()

以上是关于如何在没有 dralogfragment 实例的情况下从适配器显示对话框片段?的主要内容,如果未能解决你的问题,请参考以下文章

如何查找java.lang.NullPointerException的原因

我想实现安卓手机拍照后,照片自动同步到局域网没电脑。没有外网的情

Java的静态成员类

如何在 spyder 中恢复未保存的文件

关于卷积的一个实例

既然文字表你心,如何用深度学习读懂你的情?