Tecnologia do Blogger.
RSS

Re: [androidbrasil-dev] Re: Trabalhando com Fragments

Pessoal, só complementando a informação que eu havia dado antes nesta thread...

Já adicionei as referências bibliográficas aos slides da minha apresentação (http://www.slideshare.net/suelengc/devfest-2012-esquartejando-sua-activity-com-fragments) e agora tem também o vídeo no youtube: http://www.youtube.com/watch?v=rM7-xjmI3Cw

Abraços,
--



2013/1/3 Ricardo Lecheta <rlecheta@gmail.com>

vc so pode fazer replace em fragments adicionados pela api. ta adicionando eles por xml?

On Jan 2, 2013 10:45 PM, "Guilherme Bernardi" <gui.bernardi09@gmail.com> wrote:
Ricardo obrigado pela atenção.

Então ai que está, anteriormente eu estava utilizando o método Replace ao invés do Add e mesmo assim ocorria o mesmo problema.
Agora mesmo sabendo que já estava dando problema tentei utilizar novamente o Replace e mesmo assim não funcionou.

Tem uma coisa que notei que eu acho que pode ser isto o problema, mas não estou encontrando uma forma de resolver e nem estou encontrando o porque ele está fazendo isso.

Meu layout principal com os Fragments está implementado desta maneira:

    <fragment
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    class="dataplus.app.dataplussmart.CadastroClienteDados"
    android:id="@+id/fragDados" />
<fragment
   android:layout_width="fill_parent"
   android:layout_height="fill_parent"
   class="dataplus.app.dataplussmart.CadastroClienteEntrega"
   android:id="@+id/fragEntrega" />
<fragment
   android:layout_width="fill_parent"
   android:layout_height="fill_parent"
   class="dataplus.app.dataplussmart.CadastroClienteCobranca"
   android:id="@+id/fragCobranca" />

Quando eu passo pelo setContentView(R.layout.activity_cadastro_cliente); ele chama os 3 onCreateView dos respectivos Fragments.

Só que após ele carregar os 3 Fragments. Quando eu termino de criar as Tabs, ele adiciona mais um Fragment repetido.


Então ele deixa 2 CadastroClienteDados. Que é justamente a primeira aba que fica sobrepondo as outras.

Meu TabListener está implementado desta forma:

private class NavTabListener<T extends SherlockFragment> implements ActionBar.TabListener {

   private final SherlockFragmentActivity mActivity;

   private final String mTag;

   private final Class<T> mClass;

private SherlockFragment mFragment;

public NavTabListener(SherlockFragmentActivity activity, String tag, Class<T> clz){

mActivity = activity;

   mTag = tag;

   mClass = clz;

}

   

    public void onTabUnselected(Tab tab, FragmentTransaction ft) {

   

    SherlockFragment preInitializedFragment = (SherlockFragment) mActivity.getSupportFragmentManager().findFragmentByTag(mTag);

   

    if (preInitializedFragment != null){

    ft.detach(preInitializedFragment);

    }else if(mFragment!=null){

    ft.detach(mFragment);

    }

}

public void onTabSelected(Tab tab, FragmentTransaction ft) {

SherlockFragment preInitializedFragment = (SherlockFragment) mActivity.getSupportFragmentManager().findFragmentByTag(mTag);

if(preInitializedFragment == null) {

mFragment = (SherlockFragment) SherlockFragment.instantiate(mActivity, mClass.getName());

ft.replace(android.R.id.content, mFragment, mTag);

} else {

ft.attach(preInitializedFragment);

}

}

public void onTabReselected(Tab tab, FragmentTransaction ft) {}

    }

E cada vez que eu movimento as Tabs, mesmo utilizando o Replace ele adiciona um Fragment ao invés de fazer o replace, mesmo passando apenas na linha do Replace.

Obrigado desde já.

On Wednesday, January 2, 2013 7:56:14 PM UTC-2, rlecheta wrote:

use o metodo replace nao o add.

On Jan 1, 2013 8:07 PM, "Guilherme Bernardi" <gui.ber...@gmail.com> wrote:
Obrigado Ricardo.

É acabei resolvendo dessa maneira, obrigado pela ajuda.
Estou tendo problema com meus tabs agora, estou seguindo um tutorial que encontrei na internet mas não está funcionando legal:

Tenho meu Listener dos Tabs, mas sempre que troco de Tab é como se os 2 últimos sempre estivessem sobrepondo o primeiro:

private class NavTabListener<T extends SherlockFragment> implements ActionBar.TabListener {

   private final SherlockFragmentActivity mActivity;
   private final String mTag;
   private final Class<T> mClass;
   
private Fragment mFragment;
public NavTabListener(SherlockFragmentActivity activity, String tag, Class<T> clz){
mActivity = activity;
   mTag = tag;
   mClass = clz;
}
   
    public void onTabUnselected(Tab tab, FragmentTransaction ft) {
   
    if(mFragment!=null)
    ft.detach(mFragment);

}
public void onTabSelected(Tab tab, FragmentTransaction ft) {
if(mFragment==null){
mFragment = SherlockFragment.instantiate(mActivity, mClass.getName());
ft.add(android.R.id.content, mFragment);
}else {
ft.attach(mFragment);
}
}
public void onTabReselected(Tab tab, FragmentTransaction ft) {}
    }

Antes da maneira que eu havia implementado ao invés de ft.add estava usando ft.replace.
E ao invés de ft.detach, estava utilizando ft.remove.

Mas já tentei dessa maneira também e não funcionou.

On Tuesday, January 1, 2013 7:46:48 PM UTC-2, rlecheta wrote:
Guilherme

coloca o layout_width e layout_height na tag <fragment, igual vc faz com qualquer outra view

2013/1/1 Guilherme Bernardi <gui.ber...@gmail.com>
layout_width



--
Ricardo Lecheta

--
 
 

--
 
 

--
 
 

--
You received this message because you are subscribed to the Google Groups "Android Brasil - Dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to androidbrasil-dev+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.
 
 

  • Digg
  • Del.icio.us
  • StumbleUpon
  • Reddit
  • RSS

0 comentários:

Postar um comentário