Descargar código
MyActivity.java
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
import android.support.v4.app.FragmentTransaction;
import android.support.v4.view.ViewPager;
import android.support.v7.app.ActionBar;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
public class MyActivity extends ActionBarActivity implements ActionBar.TabListener, ViewPager.OnPageChangeListener {
private ViewPager mViewPager;;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_my);
PagerAdapter adapter = new PagerAdapter(getSupportFragmentManager());
mViewPager = (ViewPager) findViewById(R.id.pager);
mViewPager.setAdapter(adapter);
mViewPager.setOnPageChangeListener(this);
ActionBar actionBar = getSupportActionBar();
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
ActionBar.Tab tab = actionBar.newTab().setText("Productos").setTabListener(this);
actionBar.addTab(tab);
tab = actionBar.newTab().setText("Clientes").setTabListener(this);
actionBar.addTab(tab);
tab = actionBar.newTab().setText("Pedidos").setTabListener(this);
actionBar.addTab(tab);
}
public class PagerAdapter extends FragmentPagerAdapter {
public PagerAdapter(FragmentManager fm) {
super(fm);
}
public Fragment getItem(int arg0) {
switch (arg0) {
case 0:
return new Fragment_Productos();
case 1:
return new Fragment_Clientes();
case 2:
return new Fragment_Pedidos();
default:
return null;
}
}
public int getCount() {
return 3;
}
}
//implements on pager selected
@Override
public void onPageScrolled(int i, float v, int i2) {
}
@Override
public void onPageSelected(int i) {
getSupportActionBar().setSelectedNavigationItem(i);
}
@Override
public void onPageScrollStateChanged(int i) {
}
//implements tab listener
@Override
public void onTabSelected(ActionBar.Tab tab, FragmentTransaction fragmentTransaction) {
mViewPager.setCurrentItem(tab.getPosition());
}
@Override
public void onTabUnselected(ActionBar.Tab tab, FragmentTransaction fragmentTransaction) {
}
@Override
public void onTabReselected(ActionBar.Tab tab, FragmentTransaction fragmentTransaction) {
}
}
activity_my.xml
<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.view.ViewPager
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/pager"
android:layout_width="match_parent"
android:layout_height="match_parent" />
Fragment_Clientes.java
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
public class Fragment_Clientes extends Fragment {
View rootView;
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
rootView = inflater.inflate(R.layout.fm_clientes, container, false);
return rootView;
}
}
fm_clientes.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="soy cliente"
android:id="@+id/texto_clientes" />
</LinearLayout>
Fragment_Pedidos.java
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
public class Fragment_Pedidos extends Fragment {
View rootView;
int contador = 0;
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
rootView = inflater.inflate(R.layout.fm_pedidos, container, false);
TextView texto = (TextView) rootView.findViewById(R.id.texto_pedidos);
texto.setText("Incrementador de Pedidos" + "\n\n" + contador);
contador++;
return rootView;
}
}
fm_pedidos.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="New Text"
android:id="@+id/texto_pedidos" />
</LinearLayout>
Fragment_Productos.java
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
public class Fragment_Productos extends Fragment {
View rootView;
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
rootView = inflater.inflate(R.layout.fm_productos, container, false);
return rootView;
}
}
fm_productos.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
</LinearLayout>
Increibles tus codigos, muchas gracias amigo, espero sigas con tus tutoriales
ResponderEliminargracias capo
EliminarTengo un problema no se que pueda ser, la aplicación se detiene asi nada mas no abre el menu
ResponderEliminarpuede ser mil cosas, tenes que aprender el logcat, sino lo que te recomiendo es empezar un proyecto nuevo y hacer solo esto, para ver si lo estas haciendo bien... y si es así, copiarlo y pegarlo..
EliminarEsta perfecto todo, muchas gracias, pero necesito lo mismo, sin la barrita que dice swipe2 con el icono de android, se podra?
ResponderEliminartenes que ir a res/values/styles.xml Theme.Holo.Light.NoActionBar o Theme.Light.NoTitleBar anda probando el que mas te guste
Eliminarhola otravez tengo una perginta porque el mViewPager = (ViewPager) findViewById(R.id.pager); el r.idi.pager me sale rojo solo el pager que pasa ahi por favor
ResponderEliminarHola amigo, me encantan tus tutoriales, tengo una pregunta, en esta parte del código:
ResponderEliminarActionBar actionBar = getSupportActionBar();
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
ActionBar.Tab tab = actionBar.newTab().setText("Productos").setTabListener(this);
actionBar.addTab(tab);
el setNavigationMode, NAVIGATION_MODE_TABS, newTab, addTab, salen tarjados, si me pongo sobre ellos indica "is deprecated", me puedes explicar porque, gracias
Hola, Si es quiere decir que funciona por el momento, pero tienes que pensar en cambiarlo en un futuro. En otras palabras, dice, si usalo, hasta que yo diga (google)
Eliminarte agradezco la rápida respuesta, muchas gracias.
EliminarHola una pregunta como puedo meter metodos en los fragmente por ejemplo en el de pedido intento hacer un suma pero no me deja en cuanto llamo ese metodo con el evento onclick la aplicacion se cierra espero puedas ayudarme
ResponderEliminarexcelentes tutoriales amigo, queria ver si me podias ayudar con una cosa, como harias para enviarle datos a los fragment como en el tutorial de ActionBar Tabs
ResponderEliminarGracias por tus tutoriales, de casualidad sabes como hacer para que desde un mapa se pueda obtener una ventana emergente,
ResponderEliminarHola me gustaria saber como se puede hacer al momento que cargue lo haga en la segunda pestaña y no en la primera
ResponderEliminarGracias mi estimado.
ResponderEliminarObrigado !
ResponderEliminarHola Ramiro como estas
ResponderEliminarTodo me fue muy bien
pero hoy que lo abrí me salen todos los imort en negro , como si no existieran, es decir ya no estan en azul. Que puede ser?
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
import android.support.v4.app.FragmentTransaction;
import android.support.v4.view.ViewPager;
import android.support.v7.app.ActionBar;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
Al optimizar automáticamente se borran 2 import, que puede ser?
ResponderEliminarimport android.view.Menu;
import android.view.MenuItem;
Estoy muy agradecido con tus códigos son un gran ayuda, explicas de manera amplia y sencilla a la vez
ResponderEliminarPero necesito tu ayuda :c
Tengo un boton en un Fragment el cual quiero que me lance a otro activity
package com.anai.proyecto_de_grado;
import android.content.Intent;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
public class FragmentsUbicacion extends Fragment {
View rootView;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
rootView = inflater.inflate(R.layout.fm_ubicacion, container, false);
Button btn = (Button)rootView.findViewById(R.id.button);
btn.setOnClickListener(new View.OnClickListener(){
public void onClick(View v){
Intent maps = new Intent(FragmentsUbicacion.this, MapsActivity.class);///////////// Cannot resolve constructor/// ERROR
startActivity(maps);
}
});
return rootView;
}
}
tengo este error *****
Error:(20, 20) error: no suitable constructor found for Intent(FragmentsUbicacion,Class)
constructor Intent.Intent(String,Uri) is not applicable
(argument mismatch; FragmentsUbicacion cannot be converted to String)
constructor Intent.Intent(Context,Class) is not applicable
(argument mismatch; FragmentsUbicacion cannot be converted to Context)
Este comentario ha sido eliminado por el autor.
ResponderEliminarDisculpa Ramiro, si estuviera un botón en alguno de los fragmentos, como se capturaría el evento del botón?
ResponderEliminarYa lo solucione, gracias por tus tutos Ramiro, Excelentes! :)
Eliminarcomenta tu problema y como lo solucionaste, así le sirve a otros, porfa
EliminarEstoy creando una app en la cual utilizare el swipe menú y conexión a base de datos remotas, no había leído los comentarios entonces comenze a leerlos y me encontré con el comentario de Carlos Gaskell, modifique su código y el tuyo:
Eliminarpublic View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
rootView = inflater.inflate(R.layout.//aqui va el layout, container, false);
//aqui van todos los elementos puestos en el layout.xml
correo = (EditText)rootView.findViewById(R.id.edicorreo1);
contra = (EditText)rootView.findViewById(R.id.edicontra1);
btniniciar = (Button)rootView.findViewById(R.id.btniniciar);
btniniciar.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//Aqui al momento de presionar el boton verificare los datos (esto ya puede variar dependiendo a que utilidad le den)
}
});
return rootView;
}
Estoy empezando en esto de android así que puedo cometer errores, por cierto Ramiro si termino el proyecto, te lo paso para que lo cheques y lo compartas, aunque ya hiciste muchos de conexión a base de datos remotas a alguien le podría servir el código.
Disculpa Ramiro, podrías subir un tuto o explicarme como integrar un listview con imágenes y dos textos(titulo y subtitulo) en un fragmento del swipe menu? te lo agradecería mucho, de antemano un saludo y excelentes tutoriales, gracias!
ResponderEliminarno sirve para versiones de android studio recientes, lo probe copiando y pegando en un nuevo proyecto y no rula , parece que se abre y se cierra sola la app y el logcat señala una linea que aparece tachada pero tendria que andar
ResponderEliminarHola que tal muchas gracias me sirvió de mucho, solo una pregunta si arriba de los tabs deseo colocar una vista de busqueda, como mostraste en uno de tus videos, me marca error , me podrias decir como le puedo hacer para tener las dos cosas juntas (swipe tabs y la vista de busqueda)
ResponderEliminar