Android studio 在适配器内查找上下文名称
我在理解哪个活动启动了我的适配器时遇到问题。 这两个活动请求的适配器几乎相同,因此我认为在这两个活动中对recyclerViews使用相同的适配器。 出于某种原因,我在调试器中发现(显然)context.getApplicationInfo().name有值,但当我尝试使用“g”时,它等于nullAndroid 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&
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()