[ANDROID] Evento em uma caixa de Dialog personalisada

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:

[code]<?xml version="1.0" encoding="utf-8"?>

<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>

[/code]

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:

[code]public void onClickConsulta(View v) {
int id = v.getId();

    switch (id) {
    case R.id.btnContribuinteOk:
        System.out.println("Oi mundo");
        break;

    default:
        break;
    }
}[/code]

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 =]

Nada galera?

  • 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();

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: