我想在我的数组适配器中使用它。当我将this
放入子活动中以创建适配器时,它不起作用。
答案 0 :(得分:34)
getApplicationContext()
可以获取上下文值
答案 1 :(得分:26)
您可以通过以下几种方式获取背景信息:
通过活动,使用Your_Activity_Name.this
通过该应用程序,使用getApplicationContext()
通过视图,使用Your_View.getContext()
我唯一不建议使用的是getBaseContext()
。如果您需要通用的东西,请在主活动中使用公共静态变量,并在应用启动时为其分配应用程序上下文。这样您就可以随时拨打Your_Activity.your_context_variable
答案 2 :(得分:3)
您可以使用getBaseContext()
,但这是not a local context
。
答案 3 :(得分:2)
除了正确的先前答案之外,如果您已经到了需要从子活动访问“您的”上下文的位置,您可能需要考虑重构代码。 当您创建子活动(即:startActivityForResult)时,您真正在等待结果,而不是调用者活动中的操作。然后,当子活动完成(并且您有计算结果)时,您可以以适当的方式访问您的上下文。 如果子活动意识到它的创造者似乎并不好,更不用说与它相互作用了。
答案 4 :(得分:0)
这里我们采用变量上下文:
private Context acontext;
使适配器的构造函数采用另一个输入,如:
public Adapter_order_cancel(Context context,String[] myDataset, String[] job_id, String[] category, String[] name, String[] address) {
mDataset = myDataset;
_job_id = job_id;
_category = category;
_name = name;
acontext = context;
}
这是一个点击监听器,我们在其中使用了上下文:
v.setOnClickListener(new View.OnClickListener() {
@Override public void onClick(View v) {
Toast.makeText(itemView.getContext(), "Position: " + Integer.toString(getAdapterPosition()), Toast.LENGTH_LONG).show();
acontext.startActivity(new Intent(acontext, OrderDetailPage.class));
}
});