如何获得当前的上下文?

我想在我的arrays适配器中使用它。 当我把this放在一个子活动来创build一个适配器,它不起作用。

Solutions Collecting From Web of "如何获得当前的上下文?"

getApplicationContext()可以获取上下文值

你可以通过几种方式获得上下文:

通过活动,使用Your_Activity_Name.this

通过应用程序,使用getApplicationContext()

通过视图,使用Your_View.getContext()

唯一我不会推荐的是使用getBaseContext() 。 如果你需要通用的东西,在你的主要活动中有一个公共的静态variables,并在应用程序启动的时候为它分配应用程序上下文。 这样你可以随时调用Your_Activity.your_context_variable

你可以使用getBaseContext()但这not a local context

除了以前的正确答案之外,如果您已经到了需要从子活动访问“您的”上下文的地步,您可能需要考虑重构代码。 当你创build一个子活动(即:startActivityForResult)时,你确实在等待结果,而不是在调用者活动中的一个动作。 然后,当子活动完成(并且你有它的计算结果)时,你可以以适当的方式访问你的上下文。 子活动意识到它的创造者似乎不太好,更不用说与它相互作用了。

这里我们采取可变的上下文

 private Context acontext; 

使适配器的构造函数接受另一个input:

  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)); } });