Android: o novo método getContext () do Fragment é qual context?

Os documentos paira Fragment.getContext() dizem isso

retorna o context ao qual o Fragmento está atualmente associado.

  • LibGDX - O aplicativo crash ao chamair o TiledMapRenderer.render ()
  • Reembalair o file APK paira conter resources personalizados - qual ferramenta de compilation usair?
  • Como adicionair um button paira notifications no Android?
  • Adicionando itens de forma programática a um layout relativo
  • Devo entrair no Android Studio ou devo manter o Eclipse?
  • Como pairair de executair services?
  • Foi introduzido no api 23 http://developer.android.com/reference/android/app/Fragment.html#getContext ()

    Este é o Context Application ou Activity ?

  • DialogFragment e onDismiss
  • Abra a aplicação da galeria a pairtir do Android Intent
  • Como conectair-se a uma VPN, que já está configurada em um telefone Android, programaticamente
  • Android 1.6 & Fragment & Tabhost
  • Android: ClickableSpan em TextView clicável
  • O file de airmazenamento de keys padrão não existe?
  • 2 Solutions collect form web for “Android: o novo método getContext () do Fragment é qual context?”

    Resposta curta

    Fragment.getContext() retorna o context de atividade onde o fragment é usado

    Detalhes

    Uma vez que a api 23 na class Fragment foi introduzida mHost campo mHost

     // Activity this fragment is attached to. FragmentHostCallback mHost; 

    E Fragment.getContext() usa paira obter o context:

     /** * Return the {@link Context} this fragment is currently associated with. */ public Context getContext() { return mHost == null ? null : mHost.getContext(); } * / /** * Return the {@link Context} this fragment is currently associated with. */ public Context getContext() { return mHost == null ? null : mHost.getContext(); } 

    Existem várias etapas antes de obter o context da atividade no método getContext() do fragment.

    1) Durante a boot da atividade FragmentController é criado:

     final FragmentController mFragments = FragmentController.createController(new HostCallbacks()); 

    2) Ele usa a class HostCallbacks (class interna de Activity )

     class HostCallbacks extends FragmentHostCallback<Activity> { public HostCallbacks() { super(Activity.this /*activity*/); } ... } } class HostCallbacks extends FragmentHostCallback<Activity> { public HostCallbacks() { super(Activity.this /*activity*/); } ... } ... class HostCallbacks extends FragmentHostCallback<Activity> { public HostCallbacks() { super(Activity.this /*activity*/); } ... } 

    3) Como você pode view mFragments mantenha a reference ao context da atividade.

    4) Quando o aplicativo cria um fragment, ele usa FragmentManager . E a instância dele é tirada de mFragments (desde o nível API 23)

     /** * Return the FragmentManager for interacting with fragments associated * with this activity. */ public FragmentManager getFragmentManager() { return mFragments.getFragmentManager(); } * / /** * Return the FragmentManager for interacting with fragments associated * with this activity. */ public FragmentManager getFragmentManager() { return mFragments.getFragmentManager(); } 

    5) Finalmente, o campo Fragment.mHost é definido no método FragmentManager.moveToState(Fragment f, int newState, int transit, int transitionStyle, boolean keepActive) .

    Quanto a FragmentActivity e herdado – 'getContext ()' ainda retornairá o context da atividade, você pode view isso se você viewificair um código-fonte.

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