Tecnologia do Blogger.
RSS

[androidbrasil-dev] Re: Trabalhando com Fragments

Boa tarde pessoal.


Antes de mais nada um feliz ano novo a vocês.

Eu estou desenvolvendo um app para android abaixo de 3.0 e estou utilizando a Action Bar, portanto estou implementando utilizando a ActionBar Sherlock.

Inicialmente eu desenvolvi:
Uma SherlockFragmentActivity onde eu carrego as abas.
E criei 3 SherlockFragment's 1 para cada aba.

E estava trabalhando dessa maneira chamando eles no Listener da Tab, conforme a aba selecionada ou não.

Mas estava tendo milhares de problemas referentes ao acesso dos componentes nos fragments e etc.

Pois as 3 abas compõem o mesmo objeto que é o objeto Cliente.

E por exemplo eu poderia abrir o Cadastro Cliente e clicar no botão pesquisar da actionbar e pesquisar por um cliente especifico ai eu precisaria carregar todos os campos da 3 abas, mesmo as abas que ainda não foram previamente selecionadas e eu não conseguia fazer o acesso aos componentes.

Após ver esse tópico e olhar os exemplos que a Suelen postou, resolvi mudar o jeito que estava implementando para trabalhar corretamente com os Fragments, pois tenho muito pouco conhecimento relativo a eles e os exemplos são muito bons, mas estou obtendo alguns erros.

E estou recebendo uma exceção: Binary XML file line #15: You must supply a layout_width attribute.

Eu sei que é uma exceção que está bem explicito o erro, mas não estou conseguindo resolver, pode ser devido a maneira que estão implementados meus layouts, se puderem ajudar eu agradeço:

onCreate da minha Activity principal:

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
try {
setContentView(R.layout.activity_cadastro_cliente);
setTitle("Cliente");

actionBar = getSupportActionBar();
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
       ActionBar.Tab tabDados = actionBar.newTab();
       ActionBar.Tab tabEntrega = actionBar.newTab();
       ActionBar.Tab tabCobranca = actionBar.newTab();
       tabDados.setText("Dados");
       tabEntrega.setText("Entrega");
       tabCobranca.setText("Cobrança");
       tabDados.setTabListener(new NavTabListener<CadastroClienteDados>(this, "dados", CadastroClienteDados.class));
       actionBar.addTab(tabDados);
       actionBar.addTab(tabEntrega);
       actionBar.addTab(tabCobranca);
} catch (Exception e) {
// TODO: handle exception
Toast.makeText(getBaseContext(), e.getMessage(), Toast.LENGTH_LONG).show();
}
}

Layout da minha Activity principal:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".CadastroCliente" >

<LinearLayout 
   android:layout_width="match_parent"
  android:layout_height="match_parent">
   <fragment
   class="dataplus.app.dataplussmart.CadastroClienteDados"
   android:id="@+id/fragDados" />
</LinearLayout>
</RelativeLayout>

OnCreateView do Fragment da Aba de Dados:

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.activity_cadastro_cliente_dados, null);
imgBtnCNPJ = (ImageButton) view.findViewById(R.id.imgBtnStatusCNPJ);
imgBtnCNPJ.setEnabled(false);
imgBtnCNPJ.setClickable(false);
imgBtnCNPJ.setImageResource(R.drawable.ic_stat_notification_no);
inscricao = (EditText) view.findViewById(R.id.edtInscricaoCliente);
identificacao = (EditText) view.findViewById(R.id.edtIdCliente);
identificacao.setText(cliente.getIdentificacao().toString());
razaoSocial = (EditText) view.findViewById(R.id.edtRazaoCliente);
nomeFantasia = (EditText) view.findViewById(R.id.edtNomeFantasiaCliente);
contato = (EditText) view.findViewById(R.id.edtContatoCliente);
obs = (EditText) view.findViewById(R.id.edtObsCliente);
return view;
}

Layout do fragment da Aba Dados:

<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    tools:context=".CadastroClienteDados">
    
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
   android:layout_width="match_parent"
   android:layout_height="wrap_content"
   android:orientation="vertical"
   android:paddingTop="15dip">
   
   <!-- Inscrição -->
   
   <TextView
    android:id="@+id/txtInscricaoCliente"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:layout_marginLeft="5dp"
       android:text="@string/inscricaoCliente"
       android:textAppearance="?android:attr/textAppearanceMedium"/>

</LinearLayout>

</ScrollView>

Eu resumi o layout do Fragment, pq ele tem vários componentes e eu acredito que o erro esteja mais em relação ao ScrollView.

Se puder me ajudar eu agradeço.

Obrigado desde já.

On Thursday, December 27, 2012 11:41:05 AM UTC-2, luiszacheu wrote:
Ola a todos, bom sigo os livros do lecheta mas estou com um pouco de dificuldades no seguinte cenário.
Tenho uma activity que possui 2 fragments, onde um é um ListFragment e o outro é um Fragment.
Porem na minha activity, onde tenho uma action bar, gostaria de clicar na opçao adicionar item, que criei e ao chamar essa ação é mostrado um DialogFragment onde insiro um nome e clico em um botao salvar e adiciono o item a ListFragment.
Bom a minha dificuldade está quando eu clico na opçao de adicionar e clico em salvar passo o metodo dimiss(); para o DialogFragment so que nao consigo encontrar uma forma de atulizar a listFragment.

Alguem pode me ajudar, estou meio perdido nisso.

OBrigado!

--
 
 

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

1 comentários:

Frederico Brigatte disse...

Bom dia, gostaria de um exemplo utilizando ActionBar, Fragments e EditText. Poderia me explicar como montar um exemplo com isso? Já tenho a ActionBar. Meu email é frederico.brigatte@gmail.com

Postar um comentário