Android - caixa de diálogo de alerta
Uma caixa de diálogo é uma pequena janela que solicita ao usuário uma decisão ou insere informações adicionais.
Algumas vezes em seu aplicativo, se você quiser perguntar ao usuário sobre a tomada de uma decisão entre sim ou não em resposta a alguma ação específica realizada pelo usuário, permanecendo na mesma atividade e sem alterar a tela, você pode usar o Alert Dialog.
Para criar um diálogo de alerta, você precisa fazer um objeto de AlertDialogBuilder que é uma classe interna de AlertDialog. Sua sintaxe é fornecida abaixo
AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(this);
Agora você deve definir o botão positivo (sim) ou negativo (não) usando o objeto da classe AlertDialogBuilder. Sua sintaxe é
alertDialogBuilder.setPositiveButton(CharSequence text,
DialogInterface.OnClickListener listener)
alertDialogBuilder.setNegativeButton(CharSequence text,
DialogInterface.OnClickListener listener)
Além disso, você pode usar outras funções fornecidas pela classe do construtor para personalizar o diálogo de alerta. Estes estão listados abaixo
Sr. Não | Tipo e descrição do método |
---|---|
1 | setIcon(Drawable icon) Este método define o ícone da caixa de diálogo de alerta. |
2 | setCancelable(boolean cancel able) Este método define a propriedade de que o diálogo pode ser cancelado ou não |
3 | setMessage(CharSequence message) Este método define a mensagem a ser exibida na caixa de diálogo de alerta |
4 | setMultiChoiceItems(CharSequence[] items, boolean[] checkedItems, DialogInterface.OnMultiChoiceClickListener listener) Este método define uma lista de itens a serem exibidos na caixa de diálogo como o conteúdo. A opção selecionada será notificada pelo ouvinte |
5 | setOnCancelListener(DialogInterface.OnCancelListener onCancelListener) Este método define o retorno de chamada que será chamado se o diálogo for cancelado. |
6 | setTitle(CharSequence title) Este método define o título a aparecer na janela |
Depois de criar e configurar o construtor de diálogo, você criará um diálogo de alerta chamando o método create () da classe do construtor. Sua sintaxe é
AlertDialog alertDialog = alertDialogBuilder.create();
alertDialog.show();
Isso criará a caixa de diálogo de alerta e a mostrará na tela.
Fragmento de diálogo
Antes de entrar em um exemplo, devemos conhecer o fragmento de diálogo. Fragmento de diálogo é um fragmento que pode mostrar fragmento na caixa de diálogo
public class DialogFragment extends DialogFragment {
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
// Use the Builder class for convenient dialog construction
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
builder.setPositiveButton(R.string.fire, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
toast.makeText(this,"enter a text here",Toast.LENTH_SHORT).show();
}
})
.setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
finish();
});
// Create the AlertDialog object and return it
return builder.create();
}
}
}
Diálogo de lista
É usado para mostrar uma lista de itens em uma caixa de diálogo. Suponha que o usuário precise selecionar uma lista de itens ou então clique em um item de uma lista múltipla de itens. Nessa situação, podemos usar o diálogo de lista.
public Dialog onCreateDialog(Bundle savedInstanceState) {
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
builder.setTitle(Pick a Color)
.setItems(R.array.colors_array, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
// The 'which' argument contains the index position
// of the selected item
}
});
return builder.create();
}
Caixa de diálogo de lista de escolha única
É usado para adicionar lista de escolha única à caixa de diálogo. Podemos marcar ou desmarcar de acordo com a escolha do usuário.
public Dialog onCreateDialog(Bundle savedInstanceState) {
mSelectedItems = new ArrayList();
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
builder.setTitle("This is list choice dialog box");
.setMultiChoiceItems(R.array.toppings, null,
new DialogInterface.OnMultiChoiceClickListener() {
@Override
public void onClick(DialogInterface dialog, int which, boolean isChecked) {
if (isChecked) {
// If the user checked the item, add it to the selected items
mSelectedItems.add(which);
}
else if (mSelectedItems.contains(which)) {
// Else, if the item is already in the array, remove it
mSelectedItems.remove(Integer.valueOf(which));
}
}
})
// Set the action buttons
.setPositiveButton(R.string.ok, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int id) {
// User clicked OK, so save the mSelectedItems results somewhere
// or return them to the component that opened the dialog
...
}
})
.setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int id) {
...
}
});
return builder.create();
}
Exemplo
O exemplo a seguir demonstra o uso de AlertDialog no Android.
Para experimentar este exemplo, você precisa executá-lo em um emulador ou dispositivo real.
Passos | Descrição |
---|---|
1 | Você usará o Android Studio para criar um aplicativo Android e nomeá-lo como Meu aplicativo no pacote com.example.sairamkrishna.myapplication. |
2 | Modifique o arquivo src / MainActivity.java para adicionar o código da caixa de diálogo de alerta para iniciar a caixa de diálogo. |
3 | Modifique o arquivo XML de layout res / layout / activity_main.xml e adicione qualquer componente GUI, se necessário. |
4 | Não há necessidade de alterar as constantes de string padrão. O Android Studio cuida das strings padrão em values / string.xml |
5 | Execute o aplicativo e escolha um dispositivo Android em execução, instale o aplicativo nele e verifique os resultados. |
Aqui está o código modificado de src/MainActivity.java
package com.example.sairamkrishna.myapplication;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Toast;
public class MainActivity extends ActionBarActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void open(View view){
AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(this);
alertDialogBuilder.setMessage("Are you sure,
You wanted to make decision");
alertDialogBuilder.setPositiveButton("yes",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface arg0, int arg1) {
Toast.makeText(MainActivity.this,"You clicked yes
button",Toast.LENGTH_LONG).show();
}
});
alertDialogBuilder.setNegativeButton("No",new DialogInterface.OnClickListener() {
Override
public void onClick(DialogInterface dialog, int which) {
finish();
}
});
AlertDialog alertDialog = alertDialogBuilder.create();
alertDialog.show();
}
}
Aqui está o código modificado de res/layout/activity_main.xml
No código abaixo abc indica o logotipo de tutorialspoint.com
<?xml version="1.0" encoding="utf-8"?>
<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"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin"
tools:context=".MainActivity">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Alert Dialog"
android:id="@+id/textView"
android:textSize="35dp"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Tutorialspoint"
android:id="@+id/textView2"
android:textColor="#ff3eff0f"
android:textSize="35dp"
android:layout_below="@+id/textView"
android:layout_centerHorizontal="true" />
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/imageView"
android:src="@drawable/abc"
android:layout_below="@+id/textView2"
android:layout_alignRight="@+id/textView2"
android:layout_alignEnd="@+id/textView2"
android:layout_alignLeft="@+id/textView"
android:layout_alignStart="@+id/textView" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Alert dialog"
android:id="@+id/button"
android:layout_below="@+id/imageView"
android:layout_alignRight="@+id/textView2"
android:layout_alignEnd="@+id/textView2"
android:layout_marginTop="42dp"
android:onClick="open"
android:layout_alignLeft="@+id/imageView"
android:layout_alignStart="@+id/imageView" />
</RelativeLayout>
Aqui é deStrings.xml
<resources>
<string name="app_name">My Application</string>
</resources>
Aqui está o código padrão de AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.sairamkrishna.myapplication" >
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="com.example.sairamkrishna.myapplication.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>
Vamos tentar executar seu aplicativo. Presumo que você tenha conectado o seu dispositivo Android Mobile real ao computador. Para executar o aplicativo do Android Studio, abra um dos arquivos de atividade do seu projeto e clique no ícone Executar na barra de ferramentas. Antes de iniciar seu aplicativo,] Android Studio exibirá a seguinte janela para selecionar uma opção onde você deseja executar seu aplicativo Android.
Selecione sua opção e clique nela. Por supor, se você clicou no botão sim, o resultado seria o seguinte
se você não clicar em nenhum botão, ele chamará finish () e fechará seu aplicativo.