Я хочу использовать его в моем адаптере массива. Когда я добавляю this
в под-действие для создания адаптера, он не работает.
Как получить текущий контекст?
Ответ 1
getApplicationContext() может получить значение контекста
Ответ 2
Вы можете получить контекст несколькими способами:
Посредством Activity, используя Your_Activity_Name.this
В приложении, используя getApplicationContext()
В представлении, используя Your_View.getContext()
Единственное, что я бы не рекомендовал, это использовать getBaseContext()
. Если вам нужно что-то универсальное, у вас есть статическая переменная общего назначения в вашем основном действии и назначьте контекст приложения для него, когда начнется ваше приложение. Таким образом вы всегда можете вызвать Your_Activity.your_context_variable
Ответ 3
Вы можете использовать getBaseContext()
, но это not a local context
.
Ответ 4
Помимо правильных предыдущих ответов, вы можете подумать о рефакторинге вашего кода, если вы пришли к тому, что вам нужно получить доступ к "вашему" контексту из вспомогательной активности. Когда вы создаете вспомогательную активность (то есть: startActivityForResult), вы действительно ожидаете результата, а не за действие в активности вызывающего абонента. Затем, когда суб-активность завершена (и у вас есть результат ее расчетов), вы можете получить доступ к своему контексту надлежащим образом. Просто не кажется прекрасным, что субактивность осознает своего создателя, не говоря уже о взаимодействии с ним.
Ответ 5
Здесь мы используем переменный контекст:
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));
}
});