Como usar fragmentos para programar seu aplicativo android

Video: Programação Android - s03e08 - Utilizando Fragmentos no Android - parte 1

A interface do usuário no exemplo aplicativo Android usada aqui tem três painéis - uma lista de itens, um painel de detalhes descrevendo qualquer item selecionado na lista, e um painel de detalhes-in-mais profundidade. Em uma tela do smartphone pequeno, cada painel pode ser uma atividade separada. Mas uma tela de tablet no modo paisagem tem espaço para mais de um painel.

A imagem abaixo mostra esta aplicação com dois dos três painéis. O painel à esquerda exibe uma lista de componentes do SDK do Android. O painel à direita exibe uma descrição de qualquer componente é escolhido na lista à esquerda. (A descrição é, na verdade, as primeiras frases de documentação do SDK do componente.) Este padrão detalhes-on-the-direita é parte de muitas interfaces de usuário.

Dois fragmentos ligados a uma actividade.
Dois fragmentos ligados a uma actividade.

Para criar a exibição, você constrói uma atividade. A actividade tem dois fragmentos de - um fragmento à esquerda e outra à direita. O painel esquerdo mostra o mesmo fragmento em todo o prazo da aplicação, então você pode declarar esse fragmento no arquivo de layout da atividade. O painel da direita mostra um fragmento de cada vez, mas as mudanças de fragmentos durante a execução do aplicativo. Então você declarar um layout moldura no painel direito.

lt;? xml version = “1.0” encoding = “utf-8” gt;

No código acima, o android: layout_ qualquer que seja atributos dividir a tela em duas metades - uma meia para o elemento fragmento e a outra metade para a FrameLayout elemento. A estratégia com esses atributos é começar através da atribuição de um mínimo de zero pixels para cada elemento. É claro que, de zero significa que não há pixels de largura em todo (que é o mesmo que ser invisível). Para manter as duas metades do layout de ser invisível, atribuir igual diferente de zero layout_weight Os valores para as duas metades. Com valores de peso diferentes de zero, cada metade se expande para preencher o espaço disponível no layout.

O uso do nome da classe totalmente qualificado do fragmento (com.allmycode.frag.ComponentNamesFragment) É intencional. Um nome abreviado (tal como .ComponentNamesFragment) Não irá cortar a mostarda.

Caso você esteja se perguntando, built-in do Android detailsElementBackground fornece uma aparência uniforme para coisas como a metade direita (coisas que exibem detalhes sobre um item que o usuário tenha selecionado).

principal código de atividade do aplicativo é impressionantemente desinteressante.

pacote com.allmycode.frag-import android.app.Activity-import android.os.Bundle-pública AllPurposeActivity classe estende Atividade {@Overrideprotected onCreate (Bundle savedInstanceState) {super.onCreate (savedInstanceState) -setContentView void (R.layout.main ) -}}

O código a seguir contém o ComponentNamesFragment classe. Em virtude do layout no primeiro exemplo, Android planta uma ComponentNamesFragment no lado esquerdo da tela do dispositivo.

pacote com.allmycode.frag-import android.app.FragmentManager-import android.app.FragmentTransaction-import android.app.ListFragment-import android.os.Bundle-import android.view.View-import android.widget.ArrayAdapter-import ComponentNamesFragment classe android.widget.ListView-pública estende ListFragment {string estática final [] COMPONENTES = { “Atividade”, “Serviço”, “BroadcastReceiver”, “ContentProvider”} - @ Overridepublic vazio onActivityCreated (Bundle savedInstanceState) {super.onActivityCreated ( savedInstanceState) -setListAdapter (novo ArrayAdapterlt; gt; (getActivity (), android.R.layout.simple_list_item_1, COMPONENTES)) -} @ Overridepublic vazio onListItemClick (l ListView, Vista v, índice int, long id) {// Criar fragmento com indexDocsFragment docsFragment = new docsFragment () - args Bundle = Helper.getBundleWithIndex (índice) -docsFragment.setArguments (args) - // Limpar a parte de trás stackFragmentManager fragmentManager = getFragmentManager () - int backStackEntryCount = fragmentManager.getBackStackEnt ryCount () - para (int i = 0- i lt; backStackEntryCount- i ++) {fragmentManager.popBackStackImmediate () -} // Realizar a transactionFragmentTransaction fragmentTransaction = fragmentManager.beginTransaction () - fragmentTransaction.replace (R.id.docs, docsFragment) -fragmentTransaction.addToBackStack (null) -fragmentTransaction.commit () -}}

A classe no código acima estende Android do ListFragment classe. UMA ListFragment é um fragmento que exibe uma lista. Logo no início do ciclo de vida do fragmento, o código no exemplo acima define um adaptador lista (mais especificamente, uma ArrayAdapter) Para o fragmento. Então, como precoce é “cedo”?



o ArrayAdapter primeiro parâmetro do construtor é um contexto. Mas espere! Ao contrário de uma actividade, um fragmento não é um contexto. Então você não pode usar a palavra-chave this para o ArrayAdapter primeiro parâmetro do construtor.

Felizmente, um fragmento tem um getActivity método. Uma chamada para getActivity agarra a actividade a que o fragmento está ligado. Assim, para o ArrayAdapter primeiro parâmetro do construtor, você pode chamar getActivity. Claro, você não pode chamar getActivity até que o fragmento está ligado de uma actividade existente. É por isso que o fragmento de onActivityCreated método é substituído acima. chamadas Android onActivityCreated depois de anexar o fragmento e chamando a atividade de onCreate método. Então, tudo funciona como planejado.

o android.app.Activity classe bisavó da classe é android.content.Context. Mas o android.app.Fragment classe pai da classe é velho liso java.lang.Object. Portanto, em código de uma atividade, a palavra-chave refere-se a um contexto. Mas no código de um fragmento, a palavra-chave this não se refere a um contexto.

No exemplo acima, o construtor para o ArrayAdapter tem três parâmetros.

O primeiro parâmetro é o contexto - esse parâmetro desagradável que o obriga a colocar o construtor dentro do onActivityCreated método.

O segundo parâmetro é simple_list_item_1 - um layout padrão do Android.

o simple_list_item_ 1 disposição cria o olhar que você vê no lado esquerdo da imagem. Android tem muitos destes layouts padrão. Para um resumo dos layouts disponíveis, visite site para desenvolvedores do Android.

O terceiro parâmetro é a coleção de itens que aparecem na lista.

Video: Desenvolvendo seu primeiro aplicativo Android no App Inventor - parte 1/2 programação visual

Neste exemplo, esses itens vêm da COMPONENTES matriz, que é declarada na medida em que mesmo exemplo.

Como um ListActivity, uma ListFragment tem uma onListItemClick método. Você pode responder a um clique por trabalhar com um DocsFragment, uma FragmentTransaction, e uma FragmentManager:

Video: Aprenda programar no seu celular Android

o DocsFragment representa o lado direito da imagem acima.

Uma transação fragmento é um monte de coisas que você faz com fragmentos. Por exemplo, a criação de um fragmento para substituir com outro é uma transacção.

Um gerente fragmento faz o que seu nome sugere. Ele gerencia chegadas e partidas fragmentos.


Publicações relacionadas