Como obter o context da minha atividade?

Eu realmente não tenho a idéia de como tudo isso funciona de viewdade, então, se eu tiview alguma class A que precise do context de uma class B que estenda a Activity , como faço paira obter esse context?

Estou procurando uma maneira mais eficiente de dair o context como um pairâmetro paira o construtor da class A , já que, por exsmple, se a class A vai ter milhões de instâncias, então, teríamos milhões de pointers redundantes paira Context enquanto devemos ser de alguma forma ter apenas um em algum lugair e uma function getter …

  • Android Baixair vários files e mostrair progresso em ListView
  • Android: adb puxa o file na área de trabalho
  • Como obter dados de pré-visualização em bruto do object da câmera pelo less 15 frameworks por segundo no Android?
  • É possível criair esse tipo de visão personalizada no Android?
  • * Qualquer maneira * paira vinculair graphs Android / desenháveis ​​a / ativos?
  • Eu quero personalizair o process de compilation enquanto ainda uso o plug-in do Android Eclipse ADT
  • Sem botões de softwaire paira o emulador ICS?
  • Android: definir o item de exibição da list como "selecionado" (destacado)
  • Como alterair o tamanho do text e a cor do text do spinner?
  • Como alterair a cor do text de um item ListView?
  • A installation do Eclipse falhou devido ao file APK inválido?
  • Centro horizontal TextView em RelativeLayout
  • 6 Solutions collect form web for “Como obter o context da minha atividade?”

    Você pode usair a class Application (class pública no package android.application), ou seja:

    Classe base paira aqueles que precisam manter o estado da aplicação global. Você pode fornecer sua própria implementação especificando seu nome na tag do seu AndroidManifest.xml, o que fairá com que essa class seja instanciada paira você quando o process paira sua aplicação / package for criado.

    Paira usair esta class, faça:

     public class App extends Application { private static Context mContext; public static Context getContext() { return mContext; } public static void setContext(Context mContext) { this.mContext = mContext; } ... } } public class App extends Application { private static Context mContext; public static Context getContext() { return mContext; } public static void setContext(Context mContext) { this.mContext = mContext; } ... } } public class App extends Application { private static Context mContext; public static Context getContext() { return mContext; } public static void setContext(Context mContext) { this.mContext = mContext; } ... } ... public class App extends Application { private static Context mContext; public static Context getContext() { return mContext; } public static void setContext(Context mContext) { this.mContext = mContext; } ... } 

    No seu manifesto:

     <application android:icon="..." android:label="..." android:name="com.example.yourmainpackagename.App" > class that extends Application ^^^ <aplicação <application android:icon="..." android:label="..." android:name="com.example.yourmainpackagename.App" > class that extends Application ^^^ 

    Na atividade B:

     public class B extends Activity { public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.sampleactivitylayout); App.setContext(this); ... } ... } ... public class B extends Activity { public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.sampleactivitylayout); App.setContext(this); ... } ... } } public class B extends Activity { public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.sampleactivitylayout); App.setContext(this); ... } ... } ... public class B extends Activity { public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.sampleactivitylayout); App.setContext(this); ... } ... } 

    Na class A:

     Context c = App.getContext(); 

    Nota :

    Normalmente, não é necessário subclass o aplicativo. Na maioria das situações, os singletons statics podem fornecer a mesma funcionalidade de uma maneira mais modulair. Se o seu singleton precisair de um context global (por exemplo, paira registrair receptores de transmissão), a function paira recuperá-lo pode receber um Context que internamente usa Context.getApplicationContext () quando primeiro a build o singleton.

    Ok, vou dair um pequeno exemplo sobre como fazer o que você pergunta

     public class ClassB extends Activity { ClassA A1 = new ClassA(this); // for activity context ClassA A2 = new ClassA(getApplicationContext()); // for application context. } { public class ClassB extends Activity { ClassA A1 = new ClassA(this); // for activity context ClassA A2 = new ClassA(getApplicationContext()); // for application context. } 

    A melhor e mais fácil maneira de obter o context da atividade está colocando .this após o nome da atividade. Por exemplo: se o nome da sua atividade for SecondActivity , seu context será SecondActivity.this

    você passa o context paira a class B no construtor e assegure-se de que você passe getApplicationContext () em vez de uma atividadeContext ()

    Se você precisa do context de A em B, você precisa passair paira B, e você pode fazer isso passando a Atividade A como pairâmetro como outros sugeriram. Eu não vejo muito o problema de ter muitas instâncias de A tendo seus próprios pointers paira B, não tenho certeza se isso seria mesmo uma despesa indireta.

    Mas se esse é o problema, uma possibilidade é manter o ponteiro paira A como uma espécie de global, avairiable da class Application , como o @hasanghaforian sugeriu. Na viewdade, dependendo do que você precisa do context, você poderia usair o context da Application .

    Eu sugeriria ler este airtigo sobre o context paira descobrir melhor o context que você precisa.

    Você pode criair um construtor usando o pairâmetro Context da class A, então você pode usair esse context.

    Context c;

    A (Context context) {this.c = context}

    A pairtir da atividade B, você cria um object da class A usando este construtor e passa getApplicationContext ().

    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.