gpt4 book ai didi

android - 从扩展 RecyclerView.ViewHolder 的类启动 DialogFragment

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:27:38 27 4
gpt4 key购买 nike

我在 recyelerview.viewholder 类的 onClick() 方法中尝试了如下方法。

示例中使用的 SampleDialogFragment 扩展了 DialogFragment。

@Override
public void onClick(View v)
{
SampleDialogFragment df= new SampleDialogFragment();
df.show(v.getContext().getSupportFragmentManager(), "Dialog");
}

我在 v.getContext().getSupportFragmentManager() 遇到问题。我无法调用 getSupportFragmentManager()。

我也试过如下。

@Override
public void onClick(View v)
{
SampleDialogFragment df= new SampleDialogFragment();
SampleActivity activity = new SampleActivity();
df.show(activity.getSupportFragmentManager(), "Dialog");
}

SampleActivity 是回收器 View 附加的 Activity 。它没有显示错误。当我运行应用程序并崩溃时。

日志显示 Activity 已经销毁。

有什么解决办法吗?

最佳答案

正确的方法是使用接口(interface)。

public interface OnItemClickListener {
void onItemClicked(View v);
}

并在触发 onClick 方法时调用接口(interface)方法。

public class YourListAdapter extends RecyclerView.Adapter<...>

//your code
private OnItemClickListener listener;

public YourListAdapter(OnItemClickListener listener /*your additional parameters*/) {
this.listener = listener;
//...
}

@Override
public void onClick(View v){
listener.onItemClicked(View v);
}
}

您必须从 SampleActivity 传递 OnItemClickListener 接口(interface)实例

并让它在您的 SampleActivity 中实现它

public class SampleActivity extends FragmentActivity implements OnItemClickListener {

@Override
public void onItemClicked(View v) {
SampleDialogFragment df= new SampleDialogFragment();
df.show(getSupportFragmentManager(), "Dialog");
}
}

关于android - 从扩展 RecyclerView.ViewHolder 的类启动 DialogFragment,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33889477/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com