Android - ViewPager falla al cargar Fragment

 
Vista:
Imágen de perfil de fran
Val: 3
Ha aumentado su posición en 2 puestos en Android (en relación al último mes)
Gráfica de Android

ViewPager falla al cargar Fragment

Publicado por fran (4 intervenciones) el 30/03/2016 09:41:49
Hola xicos q tal, estoy desarrollando unas pruebas con un ViewPager y Fragments asociados a sus pestañas, soy nuevo con la programación Android y llevo un par de dias intentando solucionar el problema, me remito a este foro para ver si alguien puede echarme una mano.

Resulta que estoy trabajando con el paquete android.support.v4.app. para gestionar los fragments, fragmentactivity y fragmentmanager.

Aqui dejo el codigo del main activity:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
package com.example.ej.diffviewpage;
 
import android.app.Activity;
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
 
public class DiffViewPageActivity extends FragmentActivity {
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_diff_view_page);
 
        ViewPager pager=(ViewPager)findViewById(R.id.pager);
        pager.setAdapter(new SampleAdapter(getSupportFragmentManager()));
    }
}

Aqui dejo codigo del SampleAdapter

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
package com.example.ej.diffviewpage;
 
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
 
public class SampleAdapter extends FragmentPagerAdapter {
    private static int NUM_ITEMS = 3;
    public SampleAdapter(FragmentManager mgr) {
        super(mgr);
    }
 
    @Override
    public int getCount() {
        return (NUM_ITEMS);
    }
 
    @Override
    public Fragment getItem(int position) {
 
        if (position == 0) {
            return EditorFragment.newInstance(position);
        } else if (position == 1) {
            return EditorFragment.newInstance(position);
        } else
            return SwitchFragment.newInstance(position);
 
    }
}

y Aqui el de unos de los fragments pues ambos son iguales

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
package com.example.ej.diffviewpage;
 
 
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
 
 
/**
 * A simple {@link Fragment} subclass.
 */
public class EditorFragment extends Fragment {
    protected static String KEY_POSITION = "position";
    protected static EditorFragment frag = null;
 
    public static EditorFragment newInstance(int position){
        if (frag == null) {
            frag = new EditorFragment();
            Bundle args = new Bundle();
 
            args.putInt(KEY_POSITION, position);
            frag.setArguments(args);
        }
 
        return (frag);
    }
 
    public EditorFragment() {
        super();
        // Required empty public constructor
    }
 
 
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        View result = inflater.inflate(R.layout.fragment_editor, container, false);
        return (result);
    }
 
}

Ell error que me aparece en el android monitor de android studio es el siguiente:

/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.ej.diffviewpage, PID: 2292
java.lang.IllegalStateException: Can't change tag of fragment EditorFragment{1835cd id=0x7f0c0050 android:switcher:2131492944:0}: was android:switcher:2131492944:0 now android:switcher:2131492944:1

Al parecer salta al crear el adapter.

Gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder