Avisos

Programación y Desarrollo para Android Subforo exclusivo para temas de programación de software para PDAs y desarrollo de aplicaciones, interfaces, etc bajo Android

Respuesta
 
Herramientas
  #1  
Viejo 18/04/13, 20:19:12
Array

[xs_avatar]
Millas Millas no está en línea
Miembro del foro
 
Fecha de registro: dic 2009
Localización: Valencia
Mensajes: 79
Modelo de smartphone: SAMSUNG GALAXY NEXUS
Tu operador: Vodafone
Actualizar Tab con Fragments

Hola, estoy desesperado con una cosa. En mi aplicación tengo un activityFragment que crea un tab. este lo he hecho con Eclipse, en New -> Other -> Android -> AndroidActivity y seleccionandola en blanco con paginación de tabs.

Asta aquí todo bien, he conseguido poner los tabs que me hacían falta. En el primero muestro unas categorías, y en el segundo los productos de la categoría seleccionada. Pero quiero que este segundo tab se actualice cuando selecciono una categoría del primer tab.

A ver si alguien me puede hechar una mano. Si le es incómodo explicarlo por aquí o prefiere que le aclare algo que me lo diga y le mando mi correo de gmail por privado, pero por favor ayudenme que estoy un poco desesperado.

Os dejo el código que me ha generado el eclipse añadiendo yo alguna cosilla, tal como está ahora (La clase DummySectionFragment es la que me da de ejemplo eclipse pero no la uso, la que me intetersa es ListaFragmentTab):

package com.aplicacion;

import com.aplicacion.Comando.TipoObjeto;

import java.util.ArrayList;
import java.util.Locale;

import android.app.ActionBar;
import android.app.Activity;
import android.app.FragmentTransaction;
import android.content.Intent;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
import android.support.v4.app.NavUtils;
import android.support.v4.view.ViewPager;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;
import android.widget.AdapterView.OnItemClickListener;

public class PedidoActivity extends FragmentActivity implements
ActionBar.TabListener {

/**
* The {@link android.support.v4.view.PagerAdapter} that will provide
* fragments for each of the sections. We use a
* {@link android.support.v4.app.FragmentPagerAdapter} derivative, which
* will keep every loaded fragment in memory. If this becomes too memory
* intensive, it may be best to switch to a
* {@link android.support.v4.app.FragmentStatePagerAdapter}.
*
SectionsPagerAdapter mSectionsPagerAdapter;

/**
* The {@link ViewPager} that will host the section contents.
*
ViewPager mViewPager;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_pedido);

// Set up the action bar.
final ActionBar actionBar = getActionBar();
actionBar.setNavigationMode(ActionBar.NAVIGATION_M ODE_TABS);

// Create the adapter that will return a fragment for each of the three
// primary sections of the app.
mSectionsPagerAdapter = new SectionsPagerAdapter(
getSupportFragmentManager());

// Set up the ViewPager with the sections adapter.
mViewPager = (ViewPager) findViewById(R.id.pager);
mViewPager.setAdapter(mSectionsPagerAdapter);

// When swiping between different sections, select the corresponding
// tab. We can also use ActionBar.Tab#select() to do this if we have
// a reference to the Tab.
mViewPager
.setOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() {
@Override
public void onPageSelected(int position) {
actionBar.setSelectedNavigationItem(position);
}
});

// For each of the sections in the app, add a tab to the action bar.
for (int i = 0; i < mSectionsPagerAdapter.getCount(); i++) {
// Create a tab with text corresponding to the page title defined by
// the adapter. Also specify this Activity object, which implements
// the TabListener interface, as the callback (listener) for when
// this tab is selected.
actionBar.addTab(actionBar.newTab()
.setText(mSectionsPagerAdapter.getPageTitle(i))
.setTabListener(this));
}
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.pedido, menu);
return true;
}

@Override
public void onTabSelected(ActionBar.Tab tab,
FragmentTransaction fragmentTransaction) {
// When the given tab is selected, switch to the corresponding page in
// the ViewPager.
mViewPager.setCurrentItem(tab.getPosition());
}

@Override
public void onTabUnselected(ActionBar.Tab tab,
FragmentTransaction fragmentTransaction) {
}

@Override
public void onTabReselected(ActionBar.Tab tab,
FragmentTransaction fragmentTransaction) {
}

/**
* A {@link FragmentPagerAdapter} that returns a fragment corresponding to
* one of the sections/tabs/pages.
*
public class SectionsPagerAdapter extends FragmentPagerAdapter {

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

@Override
public Fragment getItem(int position) {
// getItem is called to instantiate the fragment for the given page.
// Return a DummySectionFragment (defined as a static inner class
// below) with the page number as its lone argument.
Fragment fragment = new ListaFragmentTab();
Bundle args = new Bundle();
args.putInt(ListaFragmentTab.ARG_TIPO_OBJETO, TipoObjeto.Categoria.ordinal());
fragment.setArguments(args);
return fragment;
}

@Override
public int getCount() {
// Show 3 total pages.
return 2;
}

@Override
public CharSequence getPageTitle(int position) {
Locale l = Locale.getDefault();
switch (position) {
case 0:
return getString(R.string.title_section1).toUpperCase(l);
case 1:
return getString(R.string.title_section2).toUpperCase(l);
case 2:
return getString(R.string.title_section3).toUpperCase(l);
}
return null;
}
}

/**
* A dummy fragment representing a section of the app, but that simply
* displays dummy text.
*
public static class DummySectionFragment extends Fragment {
/**
* The fragment argument representing the section number for this
* fragment.
*
public static final String ARG_SECTION_NUMBER = "section_number";

public DummySectionFragment() {
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_pedido_dummy,
container, false);
TextView dummyTextView = (TextView) rootView
.findViewById(R.id.section_label);
dummyTextView.setText(Integer.toString(getArgument s().getInt(
ARG_SECTION_NUMBER)));
return rootView;
}
}


public static class ListaFragmentTab extends Fragment {
final String TAG = "Lista";
public static final String ARG_TIPO_OBJETO = "tipoObjeto";
public static final String ARG_OBJETO_A_DEVOLVER = "Objeto";


TipoObjeto tipo;

ListView lvlista;
ArrayList<IObjetoHT> objetosHT;

Adaptador<?> adaptador;

@Override
public void onDestroyView() {
if(EstadoHT.categoriaActual!=null){

}
super.onDestroyView();
}

@Override
public void onActivityCreated(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onActivityCreated(savedInstanceState);
final Activity act = getActivity();

tipo = (TipoObjeto) act.getIntent().getSerializableExtra(ARG_TIPO_OBJE TO);
if (tipo == null) {
Bundle bundle = this.getArguments();
if (bundle != null) {
int index = bundle.getInt(ARG_TIPO_OBJETO, 0);
tipo = TipoObjeto.get(index);
}
}

switch (tipo) {
case Categoria:
objetosHT = (ArrayList<IObjetoHT>) (ArrayList<?>) EstadoHT
.getCategorias();
break;
}

if (objetosHT == null) {
Toast.makeText(act, "No se ha podido establecer la conexión",
Toast.LENGTH_LONG).show();
act.finish();
return;
}
if (objetosHT.size() == 0) {
Toast.makeText(act, "No hay objetos", Toast.LENGTH_LONG).show();
act.finish();
return;
}

adaptador = new Adaptador<IObjetoHT>(act, objetosHT, tipo);

lvlista = (ListView) getView().findViewById(R.id.lista);
lvlista.setAdapter(adaptador);
lvlista.setOnItemClickListener(new OnItemClickListener() {

@Override
public void onItemClick(AdapterView<?> arg0, View arg1,
int position, long arg3) {
Intent dato = new Intent();
IObjetoHT o = (IObjetoHT) lvlista.getItemAtPosition(position);
switch (tipo) {

case Categoria:
EstadoHT.categoriaActual = (Categoria) o;
android.support.v4.app.FragmentTransaction trans = getFragmentManager().beginTransaction();
trans.replace(R.id.lista, new ListaFragmentTab());


break;
case Producto:

break;
default:
dato.putExtra(ARG_OBJETO_A_DEVOLVER, o);
act.setResult(act.RESULT_OK, dato);
act.finish();
}

}

});

}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {

return inflater.inflate(R.layout.lista, container, false);

}

}
}
Responder Con Cita


Respuesta

Estás aquí
Regresar   Portal | Indice > Todo sobre Android > Programación y Desarrollo para Android



Hora actual: 01:48:18 (GMT +1)



User Alert System provided by Advanced User Tagging (Lite) - vBulletin Mods & Addons Copyright © 2025 DragonByte Technologies Ltd.

Contactar por correo / Contact by mail / 邮件联系 /