[ANDROID] Evento em uma caixa de Dialog personalisada

3 respostas
douglascst90

Bom dia senhores tudo bem?

Estou com um problema aqui que é o seguinte:

Criei uma caixa de dialog com um campo texto e um botão

Segue imagem e xml:

[img]http://img827.imageshack.us/img827/7315/dialogr.jpg[/img]

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#000000"
    android:orientation="vertical" >

    <LinearLayout
        android:id="@+id/mensagem"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:background="#000000"
        android:orientation="vertical"
        android:padding="10dp" >

        <EditText
            android:id="@+id/edtNomeContri"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:hint="@string/ConsultaContribuinte"
            android:inputType="text" />

        <Button
            android:id="@+id/btnContribuinteOk"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:onClick="onClickConsulta"
            android:text="@string/Consulta" />
    </LinearLayout>

</LinearLayout>
Na minha activity ey criei um sub menu que chama esse dialog, segue código:
case MENU_CONTRI:
            Dialog d = new Dialog(ListaContribuintes_activity.this);
            d.setContentView(R.layout.consulta_contribuinte);
            d.setTitle("Consulta");
            d.show();
            break;
O que eu nao estou conseguindo é chamar o meu metodo onClickConsulta que eu defini no button do xml. O codigo esta assim:
public void onClickConsulta(View v) {
        int id = v.getId();
        
        switch (id) {
        case R.id.btnContribuinteOk:
            System.out.println("Oi mundo");
            break;

        default:
            break;
        }
    }

E no momento em que eu clico no botão OK ele gera essa exception:

08-21 09:22:08.145: W/dalvikvm(23705): threadid=1: thread exiting with uncaught exception (group=0x4015f760)
08-21 09:22:08.155: E/AndroidRuntime(23705): FATAL EXCEPTION: main
08-21 09:22:08.155: E/AndroidRuntime(23705): java.lang.IllegalStateException: Could not find a method onClickConsulta(View) in the activity class android.view.ContextThemeWrapper for onClick handler on view class android.widget.Button with id 'btnContribuinteOk'
08-21 09:22:08.155: E/AndroidRuntime(23705):    at android.view.View$1.onClick(View.java:2684)
08-21 09:22:08.155: E/AndroidRuntime(23705):    at android.view.View.performClick(View.java:3124)
08-21 09:22:08.155: E/AndroidRuntime(23705):    at android.view.View$PerformClick.run(View.java:12022)
08-21 09:22:08.155: E/AndroidRuntime(23705):    at android.os.Handler.handleCallback(Handler.java:587)
08-21 09:22:08.155: E/AndroidRuntime(23705):    at android.os.Handler.dispatchMessage(Handler.java:92)
08-21 09:22:08.155: E/AndroidRuntime(23705):    at android.os.Looper.loop(Looper.java:132)
08-21 09:22:08.155: E/AndroidRuntime(23705):    at android.app.ActivityThread.main(ActivityThread.java:4123)
08-21 09:22:08.155: E/AndroidRuntime(23705):    at java.lang.reflect.Method.invokeNative(Native Method)
08-21 09:22:08.155: E/AndroidRuntime(23705):    at java.lang.reflect.Method.invoke(Method.java:491)
08-21 09:22:08.155: E/AndroidRuntime(23705):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:844)
08-21 09:22:08.155: E/AndroidRuntime(23705):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:602)
08-21 09:22:08.155: E/AndroidRuntime(23705):    at dalvik.system.NativeStart.main(Native Method)
08-21 09:22:08.155: E/AndroidRuntime(23705): Caused by: java.lang.NoSuchMethodException: onClickConsulta [class android.view.View]
08-21 09:22:08.155: E/AndroidRuntime(23705):    at java.lang.ClassMembers.getConstructorOrMethod(ClassMembers.java:235)
08-21 09:22:08.155: E/AndroidRuntime(23705):    at java.lang.Class.getMethod(Class.java:904)
08-21 09:22:08.155: E/AndroidRuntime(23705):    at android.view.View$1.onClick(View.java:2677)
08-21 09:22:08.155: E/AndroidRuntime(23705):    ... 11 more

Alguem poderia me ajudar a dar evento ao botao do dialog? Obrigado =]

3 Respostas

douglascst90

Nada galera?

ryouta
  • ou - isso
.setPositiveButton("Ok",
								new DialogInterface.OnClickListener() {
									public void onClick(DialogInterface dialog,
											int whichButton) {

										if (input.getText().toString() == null
												|| input.getText().toString()
														.equals("")) {
											mensagemExibir("",
													"Não Foi salvo sua Menssagen");

										} else {
											mensagen = input.getText().toString();
											insereRegistro();
											passar();
										}

									}
								})
						.setNegativeButton("Cancel",
								new DialogInterface.OnClickListener() {
									public void onClick(DialogInterface dialog,
											int whichButton) {
										mensagemExibir("",
												"Por favor entre com um nome!");
									}
								}).show();
F

A maneira que eu curto em fazer, pois acho muito mais rápida é:

  • Retirar do seu xml o botão

  • Usar o Dialog Builder com o seu xml e atribuir um positive button

LayoutInflater inflater = (LayoutInflater) contexto.getSystemService(Context.LAYOUT_INFLATER_SERVICE); View layout = inflater.inflate(Seu Layout, null); AlertDialog.Builder builder = new AlertDialog.Builder(contexto).setView(layout); builder.setPositiveButton("ok", new OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { SuaVariavel = String.valueOf(seuEdit.getText()); } });

Lembrando que no momento da declaração da variavel do edit tem que ser feita dessa maneira:

Criado 21 de agosto de 2012
Ultima resposta 30 de out. de 2012
Respostas 3
Participantes 3