Quiero cambiar un ImageView en el fragmento(que crean en el código), de FragmentActivity. (no hay ningún fragmento y etiqueta en XML).

MainActivity que se extiende desde FragmentActivity y utensilios de GooglePlayServicesClient.ConnectionCallbacks:

...
FragmentAdapter mAdapter;
ViewPager mPager;
...

public void onCreate(Bundle savedInstanceState){
    ...
    FragmentManager fm = getSupportFragmentManager();
    mAdapter = new FragmentAdapter(fm);
    mPager.setAdapter(mAdapter);
    ...}

@Override
public void onConnected(Bundle connectionHint){
//*** I want to change a ImageView on Fragment1 here
}

FragmentAdapter que se extiende desde FragmentPagerAdapter:

...
private FragmentManager mFragmentManager;

public FragmentAdapter(FragmentManager fm){
    super(fm);
}

@Override
public Fragment getItem(int pos){
//String name = makeFragmentName(R.id.mainPager, pos);
//Fragment fragmentObject = mFragmentManager.findFragmentByTag(name);
Fragment fragmentObject = null;

switch(pos){
    case 0:
        fragmentObject = new Fragment1();
        break;
    ...
}

return fragmentObject;
}
...

//private static String makeFragmentName(int viewId, iont index){
    //return "android:switcher:" + viewId + ":" + index;
//}

Según este tema para cambiar un elemento en el fragmento, de fragmentActivity:

Fragment1 que se extiende a partir de un Fragmento:

private ImageView IMGThisImageShouldChange = null;

public View onCreateView(...){
    IMGThisImageShouldChange = (ImageView)v.findViewById(R.id.TargetImage);
    ...
}

public void changeImageView(int resourceId){
    IMGThisImageShouldChange.setImageResource(resouirceId);
}

Una línea de comentario en este tema dice:

//No crear un objeto nuevo cada vez que se establece el texto. El uso de la misma
fragmento de objeto que se utiliza para ver el buscapersonas.

Entonces, ¿cómo puedo acceder a fragmentObject de MainActivity, para llamar changeImageView método?

Si tengo que encontrar el fragmento a través de la etiqueta, de acuerdo a este tema, donde debo conjunto de etiquetas y cómo encontrar?

  • jgriffsta la respuesta es correcta. La etiqueta será nula en el onCreate() método(como el fragmento de las transacciones son asincrónicas, pero se debe aceptar si usar ese código en el onConnected() de devolución de llamada.
  • Usted derecho. eso es trabajo. Pero he cambiado mi técnica a este: stackoverflow.com/questions/8785221/…. Pero en getItem() no tengo ninguna idea acerca de newInstance(). 1-¿Qué es eso de la función de los códigos? 2-Qué técnicas son mejores?
  • 1. es un método estático que devuelve un objeto de la clase en la que se ha declarado, es común java patrón) 2. El código que enlaza a es mejor porque no se basan en una etiqueta que podría ser cambiado(para romper su aplicación)
  • No entiendo el punto de la 1! ¿Mi pregunta es getItem(){…} es el adecuado? O debo verificar si fragmentObject es nulo, a continuación, cree que, por makeFragmentName? O nueva técnica manejar esto?(esto significa: null, recrear, restauración,…)
  • Su getItem() método es correcto, no necesita devolver un fragmento de objeto(lo que puede hacer ya sea mediante la creación de instancias de la clase o el uso que newInstance() método estático).
InformationsquelleAutor Dr.jacky | 2014-07-18

1 Comentario

  1. 5

    Así que, obviamente, ajuste para sus necesidades específicas, pero esto es lo que yo uso para mi Aplicación.

     Fragment frag = getSupportFragmentManager().findFragmentByTag("android:switcher:" + R.id.pager + ":" + mPager.getCurrentItem());
        if(frag!=null&&mPager.getCurrentItem()==0)
            {
               ((Fragment1) frag).changeImageView(1);
            }

Dejar respuesta

Please enter your comment!
Please enter your name here