如何获得当前的背景?

时间:2011-01-18 07:46:59

标签: android

我想在我的数组适配器中使用它。当我将this放入子活动中以创建适配器时,它不起作用。

5 个答案:

答案 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));

                }
            });