Как получать context внутри метода static в Android?

Есть какой-то способ получать context внутри определенного метода как static?

3
задан 18.05.2016, 13:58
4 ответа

Форма, чтобы это реализовывать, состоит в том, чтобы создавать класс, который он увеличивал бы Application, который содержал бы статический метод, чтобы получать контекст:

import android.app.Application;
import android.content.Context;

public class App extends Application {

    private static Application myApplication;

    public static Application getApplication() {
        return sApplication;
    }

    public static Context getContext() {
        return getApplication().getApplicationContext();
    }

    @Override
    public void onCreate() {
        super.onCreate();
        myApplication = this;
    }
}

Мы можем соглашаться от другой точки приложения на контекст, следующей формы:

App.getContext()

Но самый простой метод, он определен начиная со строительства большинства приложений, у которых есть главная активность, которая определена как MAIN, присоединяются два метода в MainActivity, чтобы получать инстанцию активности имея доступ к ней estaticamente:.

private static MainActivity myContext

public MainActivity() {
    myContext =  this;
}

public static MainActivity getInstance() {
    return myContext
}

Мы можем соглашаться от другой точки приложения на контекст, следующей формы:

MainActivity.getInstance()
3
ответ дан 24.11.2019, 14:21
  • 1
    Holas Elenasys, совершенный, м и # 225; s подробно описанный и оптимизированная, что мой soluci и # 243; n переведенная –  Webserveis 18.05.2016, 17:59
  • 2
    Большое спасибо, я использую второй м и # 233; совсем, это из-за личной простоты, но всегда нужно оценивать что использовать, инстанция активности или активность aplicaci и # 243; n. –  Jorgesys♦ 18.05.2016, 18:05

Возможно реализовывать со следующим:

В AndroidManifest.xml объявлять, что aplicaciГіn распространяется класса MyAplication

<application android:name="tu.package.name.MyApplication">
....
</application>

Класс MyApplication

public class MyApplication extends Application {

    private static Context context;

    public void onCreate() {
        super.onCreate();
        MyApplication.context = getApplicationContext();
    }

    public static Context getAppContext() {
        return MyApplication.context;
    }
}

Cuando, хочет передать к контексту ее aplicaciГіn внутри одного mГ©todo объявленный static

MyApplication.getAppContext() //para obtener el contexto de forma estática

, Переведенный SO

1
ответ дан 24.11.2019, 14:21

Ты можешь давать какую-то деталь больше? Код твоего класса с методом static, контекст, где ты это используешь...

Другой выбор состоит в том, чтобы перемещать контекст в твой метод

public static miMetodo(Context context, ...){
    context.function();
}
1
ответ дан 24.11.2019, 14:21
  • 1
    Если то, что я обычно использую, но если ты используешь miMetodo, дай другого м и # 233; каждый очевидный static, ты должен перемещать каждый context, и следующей формы, которую я нашел, можешь нарушать этот preoceso, я даю тебе +1 –  Webserveis 18.05.2016, 17:57

Самый легкий и лучший способ получать context Activity он размещая .this после Вашего имени. Например: Если имя твоего Activity SecondActivity, Ваш context был бы SecondActivity.this

1
ответ дан 24.11.2019, 14:21