Mostrando entradas con la etiqueta dialog pager inside android. Mostrar todas las entradas
Mostrando entradas con la etiqueta dialog pager inside android. Mostrar todas las entradas

Android : Dialog con Pager dentro



View Pager dentro DialogFragment

Buenas developers, en esta ocasión vamos a combinar un Dialog con un View Pager. Este tipo de combos los podemos usar para desarrollar tutoriales dentro de nuestras aplicaciones entre otras cosas.

Antes de empezar quiero destacar que la implementación de la librería android.support.v4.app es una chapuza de las más grandes de Android, y todo por la maldita fragmentación, así que en este caso voy a poner todos los imports de las clases para que no haya confusión ante las librerías que usan los objetos.

Comenazmos creando 2 fragments : fragmento y fragmento2 :






import android.net.Uri;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
 
public class fragmento extends Fragment {
 
    private OnFragmentInteractionListener mListener;

    // TODO: Rename and change types and number of parameters
    public static fragmento newInstance(String param1, String param2) {
        fragmento fragment = new fragmento();
        Bundle args = new Bundle();
        fragment.setArguments(args);
        return fragment;
    }

    public fragmento() {
        // Required empty public constructor
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        return inflater.inflate(R.layout.fragmento, container, false);
    }

    @Override
    public void onDetach() {
        super.onDetach();
        mListener = null;
    }

    public interface OnFragmentInteractionListener {
        // TODO: Update argument type and name
        public void onFragmentInteraction(Uri uri);
    }
}


import android.net.Uri;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

public class fragmento2 extends Fragment {

    public fragmento2() {
        // Required empty public constructor
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        return inflater.inflate(R.layout.fragmento2, container, false);
    }

    @Override
    public void onDetach() {
        super.onDetach();
    }

    public interface OnFragmentInteractionListener {
        // TODO: Update argument type and name
        public void onFragmentInteraction(Uri uri);
    }
}


Y ahora vamos con el DialogFragment, que es quien va a contener el pager, con su correspondiente adaptador :





import android.app.Dialog;
import android.support.v4.app.DialogFragment;
import android.os.Bundle;
import android.support.v4.view.ViewPager;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.Window;


/**
 * Created by makone on 16/03/2015.
 */
public class fragmentDialogo extends DialogFragment{

  private PageAdapter PagAdapter; //ADAPTADOR
  private ViewPager viewPager;

  @Override
    public Dialog onCreateDialog(final Bundle savedInstanceState) {
      Dialog dialog = super.onCreateDialog(savedInstanceState);
      //Configuracion Dialog
      dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
      dialog.getWindow().setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);
      return dialog;
    }

  @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
      View view = inflater.inflate(R.layout.fragment_dialog, container);   //INFLAMOS CON LA VIEW
      android.support.v4.app.FragmentManager fm = getChildFragmentManager();
      PagAdapter = new PageAdapter(fm);                              //CREAMOS ADAPTER
      viewPager = (ViewPager)view.findViewById(R.id.pager);          //INICIAMOS PAGER
      viewPager.setAdapter(PagAdapter);                              //APLICAMOS ADAPTER AL PAGER

      return view;
    }
}


import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
 
public class PageAdapter extends FragmentPagerAdapter {

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

  @Override
    public android.support.v4.app.Fragment getItem(int position) {
      if (position == 0) {
        // find first fragment...
        fragmento ft1 = new fragmento();
        return ft1;
      }

      if (position == 1) {
        // find first fragment...
        fragmento2 ft2 = new fragmento2();
        return ft2;
      }

      return null;
    }

  @Override
    public int getCount() {
      return 2;
    }
}


Bien, ya está todo montado, solo falta nuestra actividad principal crear un botón para llamar al Dialog con el pager cargado :




import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentManager;
import android.view.View;
import android.widget.Button;

public class MainActivity extends FragmentActivity {
  private Button boton;
  @Override
    protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_main);
      boton = (Button) findViewById(R.id.botonAction);   //REFERENCIA AL BOTON
      boton.setOnClickListener(new View.OnClickListener() {
        @Override
          public void onClick(View v) {
                openDialog(v);
          }
      });
    }

  public void openDialog(View view) {
    FragmentManager fm = getSupportFragmentManager();
    fragmentDialogo overlay = new fragmentDialogo();
    overlay.show(fm, "FragmentDialog");
  }
}


Y este es el resultado :






Compartir Compartir Compartir Compartir