我在了解启动适配器的活动时遇到问题。这两个活动都要求适配器几乎相同,所以我认为在2个活动中为两个recyclerViews使用相同的适配器。出于某种原因,在调试器中,我发现(显然)context.getApplicationInfo()。name具有值,但是当我尝试使用“ g”时,它等于null ...
public class CustomCatalogAdapter extends RecyclerView.Adapter<CustomCatalogAdapter.MyViewHolder>{
private Context mContext;
...
@Override
public void onBindViewHolder(CustomCatalogAdapter.MyViewHolder holder, final int position) {
ApplicationInfo applicationInfo = mContext.getApplicationInfo();
String g = applicationInfo.name;
}
}
在搜索诸如getApplicationInfo()和getApplicationContext()之类的Context函数之后找到了答案。看了亚历山大·卢卡斯的回答后:
https://stackoverflow.com/a/10641257/11388670
我知道getContext()“返回视图当前正在其中运行的上下文。通常是当前活动的Activity。“
因此,我在mContext上备份并尝试了功能,直到发现适配器在哪里运行:
String myActivityName = mContext.getClass().getSimpleName();
上面写的内容将为您提供创建活动名称的名称,就像您最初创建活动名称时一样。对于软件包名称,请改用:
mContext.getClass().getName()