Exemplos do Android DialogFragment
A maneira mais flexível de criar um diálogo não é utilizando a classe andorid.app.Dialog, mas sim a classe DialogFragment. Através disto, você obtém toda a capacidade do `fragmento', incluindo a capacidade de observar o ciclo de vida do diálogo, bem como de utilizar ViewModels.
O que é um DialogFragment?
Um DialogFragment é um fragmento que exibe uma janela de diálogo, flutuando no topo da janela de sua atividade. Este 'fragmento' contém um objeto de diálogo, que ele exibe conforme apropriado, baseado no estado do 'fragmento'.
Nesta classe utilizamos o dialogfragment de suporte desde que o framework android.app.dialogFragment foi depreciado no nível 28 da API.
Nossa implementação irá sobrepor-se a esta classe e implementar
o onCreateView(LayoutInflater, ViewGroup, Bundle) para fornecer o conteúdo do diálogo. Alternativamente, podemos substituir o onCreateDialog(Bundle) para criar um diálogo inteiramente personalizado, como um AlertDialog, com seu próprio conteúdo.
Neste artigo, estaremos aprendendo o seguinte:
- Criando um diálogo com a ListView em kotlin.
- Utilizando o `DialogFragment' para criar um diálogo com layoutt personalizado, como alertasdiálogos, diálogos de entrada, etc.
- Criando menus popup
(a). Kotlin Android `DialogFragment' com ListView
Kotlin Android DialogFragment com ListView tutorial.
Queremos ver como abrir um DialogFragment quando um simples botão é clicado. O diálogoFragmento será composto por um título e uma visualização de lista.
Nós o inflacionamos através da classe LayoutInflater a partir de uma especificação de layout xml.
Quando o usuário clica em um item ListView, nós o mostramos em um Brinde. Quando o usuário clica fora do DialogFragment', nós o descartamos(o DialogFragment').
Vamos lá.
Tutorial de Vídeo
Bem, temos um tutorial em vídeo como alternativa a isto. Se você preferir tutoriais como este, então seria bom que você assinasse nosso canal no YouTube. Basicamente temos uma TV para programação onde fazemos tutoriais diários especialmente para andróides.
Kotlin Android `DialogFragment' com o Simple ListView
Vejamos um exemplo completo.
Ferramentas
- IDE: Estúdio Android - andróide oficial andróide IDE apoiado por Jetbrains e Google.
- Idioma : Kotlin -Statically Typed Language desenvolvido primeiramente pela Jetbrains.
- Emulador : Nox Player - Um emulador rápido o suficiente para minha máquina lenta.
Gradle Scripts
Começamos explorando nossos roteiros de graduação.
(a). build.gradle(App)
Aqui está nosso arquivo de nível appbuild.gradle. Temos as dependências DSL onde adicionamos nossas dependências.
Este arquivo é chamado de app level build.gradle, uma vez que está localizado na pasta app do projeto.
Se você estiver utilizando o Android Studio versão 3 e superior, utilize a palavra-chave implementation' enquanto que se estiver utilizando uma versão menor que 3, então ainda utilize a palavra-chave compile'.
Uma vez que você tenha modificado este arquivo build.gradle, você tem que sincronizar seu projeto. O Android Studio irá, de fato, incentivá-lo a fazer isso.
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
android {
compileSdkVersion 28
defaultConfig {
applicationId "info.camposha.kotlindialogfragment"
minSdkVersion 15
targetSdkVersion 28
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation"org.jetbrains.kotlin:kotlin-stdlib-jre7:$kotlin_version"
implementation 'com.android.support:appcompat-v7:28.0.0-rc01'
}
Você também pode ver que começamos aplicando dois plugins específicos para kotlin em nosso arquivo build.gradle:
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
que é "kotlin-android" e "kotlin-android-extensions".
Código Kotlin
Os aplicativos Android podem ser escritos principalmente em Java ou Kotlin. Hoje em dia, porém, existem muitos frameworks como Flutter que também usam linguagens como Dart.
Nesta classe, estamos usando a linguagem de programação Kotlin.
Teremos estas classes em nosso projeto.
(a). PioneersFragment.kt
Representa nosso FragmentDialog e dele derivará de fato.
**1. Criando um DialogFragment***.
Começamos criando uma classe Kotlin que deriva de android.support.v4.app.DialogFragment. Utilizamos a biblioteca de suporte android.app.DialogFragment uma vez que o android.app.DialogFragment está obsoleto.
class PioneersFragment : DialogFragment() {..}
Observe que a declaração acima incluiu um construtor vazio padrão para nosso DialogFragment'. Fazemos isto utilizando os parênteses(()`) em Kotlin.
2. Substituindo o DialogFragment's OnCreateView().
Substituiremos então o método onCreateView() da classe Fragmento.
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {..}
Passamos três parâmetros:
- Objeto LayoutInflater.
- Objeto ViewGroup.
- Agrupar objeto.
**3. Inflar um Layout em um DialogFragmento***.
Dentro do método inflamos primeiro o layout "R.layout.fraglayout" através do método "inflate", utilizando a instância "LayoutInflater".
val rootView = inflater.inflate(R.layout.fraglayout, container)
**4. Criando uma Kotlin Array***
Em seguida, crie uma matriz Kotlin utilizando o método arrayOf(). Isto atuará como nossa fonte de dados para hospedar os pioneiros. Isto é o que vamos ligar à ListView que mostraremos em nosso `DialogFragment'.
var pioneers = arrayOf("Dennis Ritchie", "Rodney Brooks", "Sergey Brin", "Larry Page", "Cynthia Breazeal", "Jeffrey Bezos", "Berners-Lee Tim", "Centaurus A", "Virgo Stellar Stream")
**5. Vinculação de uma listaVisão para Kotlin Array usando o ArrayAdapter***.
Em seguida, referenciamos nossa ListView e definimos o seu adaptador. Usaremos o adaptador arrayadapter.
val myListView = rootView.findViewById(R.id.myListView) as ListView
myListView!!.adapter = ArrayAdapter<String>(activity, android.R.layout.simple_list_item_1, pioneers)
**6. Definição de um DialogFragmento Título***.
Nós definimos o título do DialogFragment' utilizando o método setTitle()`, você passa uma corda para este método.
this.dialog.setTitle("Tech Pioneers")
**7. Ouvindo os eventos da ListView em Kotlin***.
Digamos que queremos mostrar uma mensagem de brinde quando uma ListView é clicada, mostrando o item clicado:
myListView.setOnItemClickListener {
adapterView,
view,
position,
l
-> Toast.makeText(activity, pioneers[position], Toast.LENGTH_SHORT).show()
}
Aqui está o código completo da classe 'PioneersFragment':
package info.camposha.kotlindialogfragment
import android.os.Bundle
import android.support.v4.app.DialogFragment
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.ArrayAdapter
import android.widget.ListView
import android.widget.Toast
class PioneersFragment : DialogFragment() {
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
val rootView = inflater.inflate(R.layout.fraglayout, container)
var pioneers = arrayOf("Dennis Ritchie", "Rodney Brooks", "Sergey Brin", "Larry Page", "Cynthia Breazeal", "Jeffrey Bezos", "Berners-Lee Tim", "Centaurus A", "Virgo Stellar Stream")
val myListView = rootView.findViewById(R.id.myListView) as ListView
//with arrayadapter you have to pass a textview as a resource, and that is simple_list_item_1
myListView!!.adapter = ArrayAdapter<String>(activity, android.R.layout.simple_list_item_1, pioneers)
this.dialog.setTitle("Tech Pioneers")
myListView.setOnItemClickListener {
adapterView,
view,
position,
l
-> Toast.makeText(activity, pioneers[position], Toast.LENGTH_SHORT).show()
}
return rootView
}
}
(c). MainActivity.kt
Esta é nossa MainActivity.kt. Ela conterá um botão que quando clicado mostrará ou abrirá nosso `DialogFragment'.
**1. Criar uma atividade em Kotlin***.
Basta criar uma classe, dar-lhe um identificador e depois fazê-la derivar de android.support.v7.app.AppCompatActivity:
class MainActivity : AppCompatActivity() {..}
**2. Substituir o método onCreate() da atividade***.
O onCreate() é um método que se levanta quando nossa atividade é criada.
Aqui chamamos o método onCreate() da super classe. Então utilizamos o método setContentView() para inflar nossa atividade_main.xml:
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
**3. Widgets de referência em Kotlin***.
Você pode consultar widgets a partir de seu respectivo layout utilizando o método findViewById() da atividade.
Como nós fazemos com nosso botão.
val openFragmentBtn = findViewById(R.id.openFragmentID) as Button
4. Obter o FragmentManager de uma atividade
Fragmentos são hospedados por Atividades. Portanto, uma atividade mantém um supportFragmentManager como uma propriedade.
Podemos obtê-lo desta forma:
val fm = supportFragmentManager
**5. Abrir/Mostrar um Fragmento***.
Podemos abrir um Fragmento ou mostrá-lo. Mas primeiro temos que instanciar esse "Fragmento":
val pioneersFragment = PioneersFragment()
Então, podemos abri-lo quando o usuário clica em um botão, invocando o método show() da classe Fragmento:
openFragmentBtn.setOnClickListener(object : View.OnClickListener {
override fun onClick(view: View) {
pioneersFragment.show(fm, "PioneersFragment_tag")
}
})
Aqui está o código completo da MainActivity:
package info.camposha.kotlindialogfragment
import android.support.v7.app.AppCompatActivity
import android.os.Bundle
import android.view.View
import android.widget.Button
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val openFragmentBtn = findViewById(R.id.openFragmentID) as Button
val fm = supportFragmentManager
val pioneersFragment = PioneersFragment()
openFragmentBtn.setOnClickListener(object : View.OnClickListener {
override fun onClick(view: View) {
pioneersFragment.show(fm, "PioneersFragment_tag")
}
})
}
}
//end
Recursos de layout
(a). activity_main.xml
Este é o layout principal de nossa atividade'. Ele conterá nosso Botão que, quando clicado, abrirá nosso DialogFragment'.
Este layout será inflado na interface principal da atividade do usuário. Isto acontecerá através do método "SetContentView()setContentView() da Atividade, o que exigirá que passemos a ele o layout.
Faremos isso dentro do método onCreate() do Activity.
Utilizamos os seguintes elementos:
- RelativeLayout
- Botão
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
android_layout_width="match_parent"
android_layout_height="match_parent"
tools_context=".MainActivity">
<Button
android_id="@+id/openFragmentID"
android_text="Open Fragment"
android_background="@color/colorAccent"
android_layout_centerInParent="true"
android_layout_width="wrap_content"
android_layout_height="wrap_content" />
</RelativeLayout>
(b). fraglayout.xml
Nosso "layout do 'DiálogoFragmento'. Este layout é inflado na interface do usuário para nosso `Fragmento' de Diálogo.
Ele conterá um simples ListView.
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
android_orientation="vertical" android_layout_width="match_parent"
android_layout_height="match_parent">
<ListView
android_id="@+id/myListView"
android_layout_width="match_parent"
android_layout_height="wrap_content"/>
</LinearLayout>
Recursos de valor
(a). cores.xml
Nossas cores de design de material:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="colorPrimary">#3F51B5</color>
<color name="colorPrimaryDark">#303F9F</color>
<color name="colorAccent">#FF4081</color>
<color name="material_amber_700">#ffffa000</color>
<color name="material_amber_800">#ffff8f00</color>
<color name="material_amber_900">#ffff6f00</color>
<color name="material_amber_A100">#ffffe57f</color>
<color name="material_amber_A200">#ffffd740</color>
<color name="material_amber_A400">#ffffc400</color>
</resources>
(b). styles.xml
O estilo de nossa aplicação.
<resources>
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/material_amber_A400</item>
<item name="colorPrimaryDark">@color/material_amber_900</item>
<item name="colorAccent">@color/colorAccent</item>
</style>
</resources>
(b). Android DialogFragment - Mostrar RecyclerView
Este exemplo mostrará uma visão do reciclador em diaogfragmento.*
Quando o usuário clica em um botão de exibição, abrimos um diálogofragmento, exibindo um RecyclerView nele.
Resumo do projeto
| --- |
|---|
1. Criar Projeto de Atividades Básicas
- Primeiro, criar um projeto vazio no estúdio andróide. Vá para Arquivo --> Novo Projeto.
- Digite o nome do aplicativo e escolha o nome da empresa.
- Escolha o SDK mínimo.
- Escolha a
atividade básica. - Clique em Finish.
A `atividade' básica terá uma barra de ferramentas e um botão de ação flutuante já adicionados no layout.
Normalmente dois layouts são gerados com esta opção:
| --- |
|---|
Neste exemplo, utilizei uma `atividade' básica.
A atividade será automaticamente registrada no android_manifest.xml. As atividades Android são componentes e normalmente precisam ser registradas como um componente de aplicação.
Se você criou a sua manualmente, então registre-a dentro da <aplicação>...<aplicação> como a seguir, substituindo a MainActivity pelo seu nome de atividade:
<activity android_name=".MainActivity">
<intent-filter>
<action android_name="android.intent.action.MAIN" />
<category android_name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
Você pode ver que uma ação e categoria são especificadas como filtros de intenção. A categoria torna nossa MainActivity como lançador `atividade'. As atividades do lançador são executadas primeiro quando o aplicativo andróide é executado.
3. Criar interface do usuário
Aqui estão nossos layouts para este projeto:
**activity_main.xml***
- Este layout é inflado para a interface do usuário MainActivity.
- Ele inclui o content_main.xml.
Aqui estão alguns dos widgets, visualizações e grupos de visualização que são empregados".
| --- |
|---|
<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout
android_layout_width="match_parent"
android_layout_height="match_parent"
android_fitsSystemWindows="true"
tools_context="com.tutorials.hp.dialogfragmentrecyclerview.MainActivity">
<android.support.design.widget.AppBarLayout
android_layout_width="match_parent"
android_layout_height="wrap_content"
android_theme="@style/AppTheme.AppBarOverlay">
<android.support.v7.widget.Toolbar
android_id="@+id/toolbar"
android_layout_width="match_parent"
android_layout_height="?attr/actionBarSize"
android_background="?attr/colorPrimary"
app_popupTheme="@style/AppTheme.PopupOverlay" />
</android.support.design.widget.AppBarLayout>
<include layout="@layout/content_main" />
<android.support.design.widget.FloatingActionButton
android_id="@+id/fab"
android_layout_width="wrap_content"
android_layout_height="wrap_content"
android_layout_gravity="bottom|end"
android_layout_margin="@dimen/fab_margin"
android_src="@android:drawable/ic_dialog_email" />
</android.support.design.widget.CoordinatorLayout>
**content_main.xml***
Este layout é incluído em sua atividade_main.xml.
Você define seus widgets UI aqui mesmo.
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
android_layout_width="match_parent"
android_layout_height="match_parent"
android_paddingBottom="@dimen/activity_vertical_margin"
android_paddingLeft="@dimen/activity_horizontal_margin"
android_paddingRight="@dimen/activity_horizontal_margin"
android_paddingTop="@dimen/activity_vertical_margin"
app_layout_behavior="@string/appbar_scrolling_view_behavior"
tools_context="com.tutorials.hp.dialogfragmentrecyclerview.MainActivity"
tools_showIn="@layout/activity_main">
<TextView
android_layout_width="wrap_content"
android_layout_height="wrap_content"
android_text="Hello World!" />
</RelativeLayout>
fraglayout.xml
Este layout será insuflado ao nosso `DialogFragmento'.
Ele conterá nosso "RecyclerView" como nosso "adapterview":
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
android_orientation="vertical" android_layout_width="match_parent"
android_layout_height="match_parent">
<android.support.v7.widget.RecyclerView
android_id="@+id/mRecyerID"
android_layout_width="match_parent"
android_layout_height="wrap_content"></android.support.v7.widget.RecyclerView>
</LinearLayout>
model.xml
Este layout será inflado nos itens View para nosso RecyclerView.
Basicamente um CardView para cada item de Reciclagem.
Contém um TextView simples:
<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.CardView
android_id="@+id/mCard"
android_orientation="horizontal"
android_layout_width="match_parent"
android_layout_margin="10dp"
card_view_cardCornerRadius="10dp"
card_view_cardElevation="10dp"
android_layout_height="wrap_content">
<RelativeLayout
android_layout_width="match_parent"
android_layout_height="match_parent">
<TextView
android_layout_width="wrap_content"
android_layout_height="wrap_content"
android_textAppearance="?android:attr/textAppearanceLarge"
android_text="Name"
android_id="@+id/nameTxt"
android_padding="10dp"
android_layout_alignParentLeft="true"
/>
</RelativeLayout>
</android.support.v7.widget.CardView>
4. Criar classes Java
Os aplicativos Android são escritos em linguagem de programação Java, portanto, vamos criar algumas classes.
1. MyHolder.java
Nossa classe ViewHolder.
package com.tutorials.hp.dialogfragmentrecyclerview.mRecycler;
import android.support.v7.widget.RecyclerView;
import android.view.View;
import android.widget.TextView;
import com.tutorials.hp.dialogfragmentrecyclerview.R;
public class MyHolder extends RecyclerView.ViewHolder {
TextView nameTxt;
public MyHolder(View itemView) {
super(itemView);
nameTxt= (TextView) itemView.findViewById(R.id.nameTxt);
}
}
2. MeuAdaptador.java
Nossa classe de adaptador reciclador:
package com.tutorials.hp.dialogfragmentrecyclerview.mRecycler;
import android.content.Context;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import com.tutorials.hp.dialogfragmentrecyclerview.R;
public class MyAdapter extends RecyclerView.Adapter<MyHolder> {
Context c;
String[] tvshows;
public MyAdapter(Context c, String[] tvshows) {
this.c = c;
this.tvshows = tvshows;
}
//INITIALIE VH
@Override
public MyHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View v= LayoutInflater.from(parent.getContext()).inflate(R.layout.model,parent,false);
MyHolder holder=new MyHolder(v);
return holder;
}
//BIND DATA
@Override
public void onBindViewHolder(MyHolder holder, int position) {
holder.nameTxt.setText(tvshows[position]);
}
@Override
public int getItemCount() {
return tvshows.length;
}
}
TVShowFragment.java
Este é o nosso `DialogFragmento'. Ele deriva de android.app.DiloagFragment.
Esta classe mostrará nosso "RecyclerView":
package com.tutorials.hp.dialogfragmentrecyclerview;
import android.app.DialogFragment;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import com.tutorials.hp.dialogfragmentrecyclerview.mRecycler.MyAdapter;
public class TVShowFragment extends DialogFragment {
String[] tvshows={"Crisis","Blindspot","BlackList","Game of Thrones","Gotham","Banshee"};
RecyclerView rv;
MyAdapter adapter;
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View rootView=inflater.inflate(R.layout.fraglayout,container);
//RECYCER
rv= (RecyclerView) rootView.findViewById(R.id.mRecyerID);
rv.setLayoutManager(new LinearLayoutManager(this.getActivity()));
//ADAPTER
adapter=new MyAdapter(this.getActivity(),tvshows);
rv.setAdapter(adapter);
this.getDialog().setTitle("TV Shows");
return rootView;
}
}
4. MainActivity.java
Nossa PrincipalAtividade.
Ela conterá um botão que ao ser clicado mostrará nosso `DialogFragment':
package com.tutorials.hp.dialogfragmentrecyclerview;
import android.app.FragmentManager;
import android.os.Bundle;
import android.support.design.widget.FloatingActionButton;
import android.support.design.widget.Snackbar;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.View;
import android.view.Menu;
import android.view.MenuItem;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
final FragmentManager fm=getFragmentManager();
final TVShowFragment tv=new TVShowFragment();
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
tv.show(fm,"TV_tag");
}
});
}
}
Exemplo 2 - Android `DialogFragment' - ListView Search/Filter
A idéia de diálogos é ótima, porque podemos abri-los do nada. O usuário pode então realizar seu trabalho e depois dispensar o diálogo.
Neste exemplo, criamos um fragmento de diálogo que é exibido quando um simples botão é clicado a partir de nossa principal [atividade] (https://camposha.info/android/activity).
Nosso diálogo conterá uma simples ListView e uma SearchView. A ListView conterá uma Lista de jogadores.
A visualização de busca pode então ser usada para pesquisar os jogadores da lista.
**1. Nossa classe MainActivity***.
Esta é nossa principal atividade.
Como classe é uma atividade, pois deriva de android.app.Activity.
| --- |
|---|
package com.tutorials.dialogfragmenter;
import android.app.Activity;
import android.app.FragmentManager;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
public class MainActivity extends Activity {
Button btn;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final FragmentManager fm=getFragmentManager();
final PlayersFragment p=new PlayersFragment();
btn=(Button) findViewById(R.id.button1);
btn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
p.show(fm, "Best Players");
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
2. Nossa classe PlayerFragment.
Esta é a nossa classe PlayerFragment.
| --- |
|---|
package com.tutorials.dialogfragmenter;
import android.app.DialogFragment;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.ListView;
import android.widget.SearchView;
import android.widget.SearchView.OnQueryTextListener;
public class PlayersFragment extends DialogFragment {
Button btn;
ListView lv;
SearchView sv;
ArrayAdapter<String> adapter;
String[] players={"Lionel Messi","Christiano Ronaldo","Neymar","Gareth Bale"};
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// TODO Auto-generated method stub
View rootView=inflater.inflate(R.layout.sports, null);
//SET TITLE DIALOG TITLE
getDialog().setTitle("Best Players In The World");
//BUTTON,LISTVIEW,SEARCHVIEW INITIALIZATIONS
lv=(ListView) rootView.findViewById(R.id.listView1);
sv=(SearchView) rootView.findViewById(R.id.searchView1);
btn=(Button) rootView.findViewById(R.id.dismiss);
//CREATE AND SET ADAPTER TO LISTVIEW
adapter=new ArrayAdapter<String>(getActivity(), android.R.layout.simple_list_item_1,players);
lv.setAdapter(adapter);
//SEARCH
sv.setQueryHint("Search..");
sv.setOnQueryTextListener(new OnQueryTextListener() {
@Override
public boolean onQueryTextSubmit(String txt) {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean onQueryTextChange(String txt) {
// TODO Auto-generated method stub
adapter.getFilter().filter(txt);
return false;
}
});
//BUTTON
btn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
dismiss();
}
});
return rootView;
}
}
**3. Nosso Layout de Atividade Principal***
Este é nosso principal layout de atividade.
| --- |
|---|
<RelativeLayout
android_layout_width="match_parent"
android_layout_height="match_parent"
android_paddingBottom="@dimen/activity_vertical_margin"
android_paddingLeft="@dimen/activity_horizontal_margin"
android_paddingRight="@dimen/activity_horizontal_margin"
android_paddingTop="@dimen/activity_vertical_margin"
tools_context=".MainActivity" >
<Button
android_id="@+id/button1"
android_layout_width="wrap_content"
android_layout_height="wrap_content"
android_layout_alignParentLeft="true"
android_layout_alignParentTop="true"
android_layout_marginLeft="97dp"
android_layout_marginTop="163dp"
android_text="Show" />
</RelativeLayout>
**4. O NOSSO JogadorFragmento Layout***
Este é o layout de nosso `DialogFragment'.
Aqui estão os seus papéis:
| --- |
|---|
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
android_layout_width="match_parent"
android_layout_height="match_parent"
android_orientation="vertical" >
<SearchView
android_id="@+id/searchView1"
android_layout_width="match_parent"
android_layout_height="wrap_content" >
</SearchView>
<ListView
android_id="@+id/listView1"
android_layout_width="match_parent"
android_layout_height="326dp" >
</ListView>
<Button
android_id="@+id/dismiss"
android_layout_width="match_parent"
android_layout_height="wrap_content"
android_text="Dismiss" />
</LinearLayout>
**Nosso Manifesto***
Nosso manifesto andróide.xml. Nossa atividade está registrada aqui.
<?xml version="1.0" encoding="utf-8"?>
<manifest
package="com.tutorials.dialogfragmenter"
android_versionCode="1"
android_versionName="1.0" >
<uses-sdk
android_minSdkVersion="19"
android_targetSdkVersion="19" />
<application
android_allowBackup="true"
android_icon="@drawable/ic_launcher"
android_label="@string/app_name"
android_theme="@style/AppTheme" >
<activity
android_name="com.tutorials.dialogfragmenter.MainActivity"
android_label="@string/app_name" >
<intent-filter>
<action android_name="android.intent.action.MAIN" />
<category android_name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>