Подтвердить что ты не робот

Как получить текущий контекст?

Я хочу использовать его в моем адаптере массива. Когда я добавляю this в под-действие для создания адаптера, он не работает.

4b9b3361

Ответ 1

getApplicationContext() может получить значение контекста

Ответ 2

Вы можете получить контекст несколькими способами:

Посредством Activity, используя Your_Activity_Name.this

В приложении, используя getApplicationContext()

В представлении, используя Your_View.getContext()

Единственное, что я бы не рекомендовал, это использовать getBaseContext(). Если вам нужно что-то универсальное, у вас есть статическая переменная общего назначения в вашем основном действии и назначьте контекст приложения для него, когда начнется ваше приложение. Таким образом вы всегда можете вызвать Your_Activity.your_context_variable

Ответ 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));

                }
            });