Felipe,
Para setar o id no fragment use @+id ao invés de @id.
No site do developer.android tem uma definição que talvez te ajude:
Note: Each fragment requires a unique identifier that the system can use to restore the fragment if the activity is restarted (and which you can use to capture the fragment to perform transactions, such as remove it). There are three ways to provide an ID for a fragment:
- Supply the
android:idattribute with a unique ID. - Supply the
android:tagattribute with a unique string. - If you provide neither of the previous two, the system uses the ID of the container view.
- Supply the
Abraços,
--

2012/11/28 Felipe Aron <felipearon@gmail.com>
Fiz alguns testes aqui, criando um novo exemplo, e creio que encontrei o problema (mas não a solução). Vamos a explicação:Eu estou usando o Sherlock ActionBar.Minha tela inicial (em anexo) tem duas Tabs contendo o Fragment1 e Fragment2. Esse dois Fragments são incluídos dinamicamente no container da Activity.Dentro do meu Fragment2, eu tenho a chamada do Fragment3 - esse incluído através de <fragment /> no XML do Fragment2:<fragmentclass="net.exemplo.exemplofragment.Fragment3"android:layout_width="match_parent"android:layout_height="wrap_content" />Até aqui o projeto é executado quase "sem erros". - Apesar dos fragments executarem corretamente, ao virar a tela ocorre um exception. Porém esse é apenas um detalhe não sendo o foco principal.[!] A partir dai, preciso então acessar o Fragment3, e para isso preciso indicar a TAG para ele. Colocando a tag e executando o projeto, já ocorre o ERRO de duplicidade de id/tag.Tentei então adicionar dinamicamente o Fragment3 dentro do meu Fragment2 a partir de um container. Porém não obtive sucesso pois não consegui adicionar via código.[!] Pesquisando na Internet (Stackoverflow), encontrei várias pessoas dizendo que um Fragment não pode conter outro Fragment. Creio então que esse seja o problema...Perguntas:a) É correto afirmar que um Fragment não pode conter outro Fragment?b) Como faço para inserir dinamicamente um Fragment, através do getSupportManager() dentro do outro Fragment?--Em 27 de novembro de 2012 14:44, Felipe Aron <felipearon@gmail.com> escreveu:
A tag realmente não gera classe R, mas o erro de duplicação persiste:
"Duplicate id 0xffffffff, tag fragData, or parent id...."Verifiquei a classe R em busca desse "0xffffffff" porém não existe.
Confesso que estou andando em círculos com esse pequeno/grande problema...rs.Em 27 de novembro de 2012 14:36, Ricardo Lecheta <rlecheta@gmail.com> escreveu:
FelipeCom a tag não vai duplicar, pois não gera a classe R.--
Veja na classe R quem é este 0x7f040047, que você vai descobrir onde duplicou
2012/11/27 Felipe Aron <felipearon@gmail.com>Ricardo tentei com tag também, mas deu o mesmo erro de duplicidade:<fragmentclass="br.com.fsoft.tablet.interno.fragments.FragmentData"android:tag="fragData"android:layout_width="wrap_content"android:layout_height="wrap_content" />Pesquisando na Internet, inclusive um vídeo teu falando sobre Fragment diz para validar o Bundle:if(savedInstanceState == null)Porém não entendi ao certo como usa-lo.--Em 27 de novembro de 2012 14:18, Ricardo Lecheta <rlecheta@gmail.com> escreveu:
--Felipe,Use uma tag no lugar de id, depois faça findFragmentByTag..
2012/11/27 Felipe Aron <felipearon@gmail.com>
--Galera, no meu layout (xml) adicionei um <fragment/> sem @id, e está funcionando normalmente:<!-- DATA PARA ACERTO PREVISTO --><LinearLayoutandroid:id="@+id/lnlAcertoPrevisto"android:layout_below="@id/lnlRepresentante"android:layout_width="match_parent"android:layout_height="wrap_content"android:orientation="vertical" ><TextViewandroid:layout_width="match_parent"android:layout_height="wrap_content"android:text="@string/acertoPrevisto"android:textStyle="bold" /><fragmentclass="br.com.fsoft.tablet.interno.fragments.FragmentData"android:layout_width="wrap_content"android:layout_height="wrap_content" /></LinearLayout>Porém agora, vou precisar dar um @id para ese <fragment/> pois vou precisar acessá-lo no meu FragmentActivity.Porém, se coloco @id no <fragment/> ao executar o app, dá erro:"Caused by: java.lang.IllegalArgumentException: Binary XML file lineDuplicate id 0x7f040047, tag null, or parent id 0x0 with another fragment for br.com.fsoft.tablet.interno.fragments.FragmentData"
Pelo que entendi o erro diz que esse @id está duplicado, mas não sei o porque. Alguém já passou por isso? Como resolver?--Analista-Programador
--
Ricardo Lecheta
--
Ricardo Lecheta






0 comentários:
Postar um comentário