Android studio 在适配器内查找上下文名称

Android studio 在适配器内查找上下文名称,android-studio,android-recyclerview,android-context,Android Studio,Android Recyclerview,Android Context,我在理解哪个活动启动了我的适配器时遇到问题。 这两个活动请求的适配器几乎相同,因此我认为在这两个活动中对recyclerViews使用相同的适配器。 出于某种原因,我在调试器中发现(显然)context.getApplicationInfo().name有值,但当我尝试使用“g”时,它等于null public class CustomCatalogAdapter extends RecyclerView.Adapter<CustomCatalogAdapter.MyViewHolder&

我在理解哪个活动启动了我的适配器时遇到问题。 这两个活动请求的适配器几乎相同,因此我认为在这两个活动中对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;
   }
}
公共类CustomCatalogAdapter扩展了RecyclerView.Adapter{ 私有上下文; ... @凌驾 公共无效onBindViewHolder(CustomCatalogAdapter.MyViewHolder,最终int位置){ ApplicationInfo ApplicationInfo=mContext.getApplicationInfo(); 字符串g=applicationInfo.name; } }
在搜索了诸如getApplicationInfo()和getApplicationContext()之类的上下文函数后找到了答案。看了亚历山大·卢卡斯的答案后:

我知道getContext()“返回视图当前运行的上下文。通常是当前活动。

因此,我备份并尝试了McContext上的函数,直到我发现我的适配器在哪里工作:

String myActivityName=mContext.getClass().getSimpleName()

上面写的内容将为您提供活动名称,正如您在创建活动时最初命名的那样。 对于程序包名称,请改用:

mContext.getClass().getName()