gpt4 book ai didi

android - 如何从适配器获取上下文以显示 DialogFragment

转载 作者:行者123 更新时间:2023-11-29 01:02:58 24 4
gpt4 key购买 nike

当我尝试从适配器显示 DialogFragment 时遇到问题。

通常我会这样调用 inflaterparent.Context,如下所示:

public class MyAdapter extends RecyclerView.Adapter<MyAdapter.adapterHolder>{
Context context;
List<list> list;

public MyAdapter (List<list> list){
this.list= list;
}

@Override
public MyAdapter.adapterHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.rec_list, parent, false);
MyAdapter.adapterHolderholder = new MyAdapter.adapterHolder(v);
context = parent.getContext();
return holder;
}.....

onBindViewHolder 中,我在点击后显示 DialogFragment

 FragmentManager manager= ((AppCompatActivity)context).getSupportFragmentManager();
Other manager= new Other();
Other.show(manager, "Other");

但有时我会得到这个错误:

java.lang.ClassCastException: android.view.ContextThemeWrapper cannot be cast to android.support.v7.app.AppCompatActivity
at com.miapp.Adapters.MyAdapter$1.onClick(MyAdapter.java:54)
at android.view.View.performClick(View.java:6213)
at android.widget.TextView.performClick(TextView.java:11074)

调查了一段时间后,我发现了一些有用的东西,这个link.中的答案。

但是当我实现它时,我总是得到这个错误:

   java.lang.ClassCastException: ccom.miapp.MyContext cannot be cast to android.support.v7.app.AppCompatActivity

有人可以帮我解决这个问题吗?我不知道是否可以通过其他方式显示 DialogFragment 或以其他方式获取 Context。

最佳答案

您可以将上下文/Activity 引用传递给您的适配器。

public class MyAdapter extends RecyclerView.Adapter<MyAdapter.adapterHolder> {
Context mContext;
List<list> list;

public MyAdapter(Context context, List<list> list) {
this.list = list;
mContext = context;
}

@Override
public MyAdapter.adapterHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View v = LayoutInflater.from(mContext).inflate(R.layout.rec_list, parent, false);
MyAdapter.adapterHolderholder = new MyAdapter.adapterHolder(v);

return holder;
}.....

但是如果你使用DialogFragment,你的activity必须是一个AppCompatActivity,那么mContext可以转换为一个AppCompatActivity。

关于android - 如何从适配器获取上下文以显示 DialogFragment,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49703374/

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