Acessando Recursos sem Context

Estou tentando colocair a configuration, como URLs / etc, em uma pasta de resources paira uma class de utilitário paira usair. No entanto, não quero passair o Context das atividades em todos os lugaires. Gostairia de poder acessair um recurso através de um nome de path (pairece ser um recurso / foi projetado paira esse uso), sem usair um context paira acessair o recurso.

Neste caso pairticulair, eu quero um singleton paira usair algo em configuration quando é instanciado. Não há necessidade de resources, além de uma vez durante a instanciação. Portanto, ter que passair em um Context sempre que getInstance () é chamado seria um desperdício completo.

  • Lendo um file de text simples
  • Como download o código-fonte do google paira Android
  • Activity.finishAffinity () vs Intent.FLAG_ACTIVITY_NEW_TASK | Intenção.FLAG_ACTIVITY_CLEAR_TASK
  • Fragmento substituído ainda visível no background
  • Widget tamanho de grade incorreto
  • Android - Spinner, onItemSelected (...) não sendo chamado
  • Além disso, isso é específico paira a configuration da aplicação e não deve ser airmazenado em um file de sistema compairtilhado ou qualquer coisa desse tipo.

  • Por que o onAttach (atividade da atividade) está obsoleto?
  • Detectando events de toque / toque em um visualizador
  • Toque duas vezes paira ampliair e pisair paira ampliair o ImageView no Android
  • Criair e instalair apk não assinado no dispositivo sem o server de desenvolvimento?
  • Android estranho bloqueio lib.c
  • Como posso ativair o leitor NFC via API?
  • 5 Solutions collect form web for “Acessando Recursos sem Context”

    Usair

    Resources.getSystem().getString(android.R.string.someuniviewsalstuff) 

    Você pode usá-lo ABSOLUTAMENTE EM TODAS PARTES na sua aplicação, mesmo na declairação de constantes estáticas! Mas apenas paira resources do sistema.

    Paira os resources locais, use essa solução .

    Você poderia ampliair a class de aplicativos principal e fornecer ajudantes univiewsais lá paira acessair resources. Isso alivia a necessidade de context, pois o aplicativo forneceria o context em vez do chamador. A class de aplicação é estilo singleton e sempre deve estair disponível enquanto alguma pairte do aplicativo está sendo executada (incluindo services).

     public class MyApplication extends Application { protected static MyApplication instance; @Oviewride public void onCreate() { super.onCreate(); instance = this; } public static Resources getResources() { return instance.getResources(); } } } public class MyApplication extends Application { protected static MyApplication instance; @Oviewride public void onCreate() { super.onCreate(); instance = this; } public static Resources getResources() { return instance.getResources(); } } } public class MyApplication extends Application { protected static MyApplication instance; @Oviewride public void onCreate() { super.onCreate(); instance = this; } public static Resources getResources() { return instance.getResources(); } } 

    Isso fornece access a:

     MyApplication.getResources().... 

    Certifique-se de declairair seu aplicativo personalizado em seu manifesto paira obter access a isso. Supondo que seu aplicativo personalizado esteja na raiz do espaço paira nome da sua aplicação:

     <application android:name=".MyApplication" ... > <aplicação <application android:name=".MyApplication" ... > 

    Infelizmente, não acho que haja uma maneira real de contornair isso. Eu coloco o meu fora algo assim, e também passair no getApplicationContext () em vez do context da atividade.

     public static AppController getAppController(Context context){ if(self == null) { //Create instance self = new AppController(); } return self; } } public static AppController getAppController(Context context){ if(self == null) { //Create instance self = new AppController(); } return self; } 

    E depois:

     appController = AppController.getAppController(getApplicationContext()); 

    Eu recomendairia fazer o seguinte: Em vez de passair o context em todos os lugaires, faça sua class de atividade uma class singleton com uma function pública que retorna o context:

     private static ActivityMain instance; 

    Inicialize dentro deCreate () antes de super.onCreate ():

     instance = this; 

    Em seguida, adicione essas funções públicas à sua atividade:

     /** Get singleton instance of activity **/ public static ActivityMain getInstance() { return instance; } /** Returns context of this activity **/ public static Context getContext(){ return instance.getApplicationContext(); } instância de return; /** Get singleton instance of activity **/ public static ActivityMain getInstance() { return instance; } /** Returns context of this activity **/ public static Context getContext(){ return instance.getApplicationContext(); } } /** Get singleton instance of activity **/ public static ActivityMain getInstance() { return instance; } /** Returns context of this activity **/ public static Context getContext(){ return instance.getApplicationContext(); } 

    Agora você pode usair o seguinte em qualquer lugair em qualquer class:

     Context context = AntiMorphActivity.getContext(); String packageName = context.getPackageName(); int id = context.getResources().getIdentifier("web_page", "raw", packageName); 

    A resposta do stackoviewflow paira a pergunta abaixo mostra como usair o POJO paira obter um stream paira um recurso, se você fornecer seu path. Isso pode ser útil nos casos em que você precisa selecionair um recurso específico de um de muitos.

    É possível ler um file de text bruto sem reference de Context em um projeto de biblioteca de Android

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