2016-07-20 5 views
1

i CustomDialog.java wie dieses:android individuelle Dialog mit Knopf onClick Ereignis

public class CustomDialog { 
Dialog dl; 
public void ShowDialog(Context context, String message) { 
    dl = new Dialog(context); 
    dl.setContentView(R.layout.custom_dialog); 

    TextView tv_message = (TextView) dl.findViewById(R.id.textViewMessage); 

    tv_message.setText(message); 

    Button bt_yes = (Button)dl.findViewById(R.id.buttonYes); 
    Button bt_no = (Button)dl.findViewById(R.id.buttonNo); 

    bt_yes.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      CheckYes(); 
     } 
    }); 
    bt_no.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      dl.dismiss(); 
     } 
    }); 
    dl.show(); 

} 

public Boolean CheckYesNo(Boolean check){ 
    return check; 
} 

public Boolean CheckYes() { 
    return true; 
} 

public void CloseDialog() { 
    dl.dismiss(); 
} 

}

dies Code in Aktivität CustomDialog zu verwenden:

CustomDialog cdl = new CustomDialog(); 
         cdl.ShowDialog(Activity1.this, "test"); 
         if (cdl.CheckYesNo(true)) { 
          // doing something with data and go to Activity 2 
         } 
         else { 
          cdl.CloseDialog(); 
         } 

ich so wollen :
1. Wenn Sie in Activity1 auf ImageButton klicken, wird CustomDialog angezeigt.
2. nach CustomDialog Show, wenn klicken Sie auf Schaltfläche ja, tut es etwas mit Daten und gehen Sie zu Activity2.
3. Wenn Sie Button Nein anklicken, wird CustomDialog geschlossen und macht nichts mit Daten.

aber mein Problem ist:
wenn klicken Image, CustomDialog zeigt, ist der Code, den ich mit den Daten tun will tun und Auto zu Activity2 gehen.
Ich kann nicht Ja oder Nein wählen, um zu klicken.
Ich denke Problem in Button ja OnClick-Ereignis.
wie es zu beheben?

Antwort

3

Parameter initilize

Dialog dialog; 

Sie diese verwenden, wo Sie

dialog = new Dialog(this); 
    dialog.requestWindowFeature(Window.FEATURE_NO_TITLE); 
    dialog.setContentView(R.layout.custom_dialog); 
    dialog.show(); 


TextView tv_message = (TextView) dialog .findViewById(R.id.textViewMessage); 

tv_message.setText(message); 

Button bt_yes = (Button)dialog.findViewById(R.id.buttonYes); 
    Button bt_no = (Button)dialog.findViewById(R.id.buttonNo); 

bt_yes.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     CheckYes(); 
    } 
}); 
bt_no.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     dialog.dismiss(); 
    } 
}); 
+0

I-Lösung in Ihrem Code gefunden wurde. ich danke dir sehr. – 1234abcd

+0

Most Welcome .... –

0

Ihr Code OK verwenden möchten sieht, mit der Ausnahme, dass für die 0.123.Ihrer Tasten, sehe ich nicht, warum Sie immer noch CheckYes() anrufen möchten, wenn Sie einfach tun können, was Sie in der onClick Methode tun wollten. Diese

ist, was der Code sollte wie folgt aussehen:

public void ShowDialog(final Context context, String message) { 
    dl = new Dialog(context); 
    dl.setContentView(R.layout.custom_dialog); 

    TextView tv_message = (TextView) dl.findViewById(R.id.textViewMessage); 

    tv_message.setText(message); 

    Button bt_yes = (Button)dl.findViewById(R.id.buttonYes); 
    Button bt_no = (Button)dl.findViewById(R.id.buttonNo); 

    bt_yes.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      //You said you wanted to do something with the data? What data? Anyway, this is where you can do it 
      //do whatever with the "data" 
      //this is where you want to go to another activity 
      Intent activity2 = new Intent(context, <Your-Activity2-Name>.class); 
      context.startActivity(activity2); 
      //and you still want to dismiss the dialog 
      dl.dismiss(); 
     } 
    }); 
    bt_no.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      dl.dismiss(); 
     } 
    }); 
    dl.show(); 

} 

Ich hoffe, das etwas Licht wirft. Bitte klären Sie genau, was Sie meinen, indem Sie "etwas mit den Daten machen, wenn die Schaltfläche JA geklickt wird" - auch wenn Sie sagen, dass Sie nicht Ja oder Nein wählen können, um zu klicken, was meinst du?

+0

Ich meine, wenn ImageButton geklickt hat, CustomDialog anzeigen und automatisch zu Activity2 wechseln, kann ich nicht wählen, auf die Schaltfläche Ja oder Nein zu klicken. – 1234abcd

+0

Ich kann Dialog in Activity1 nicht verwenden, da es nicht so angezeigt wird, wie ich es möchte. Also benutze ich CustomDialog – 1234abcd

+0

Bitte zeigen Sie uns den vollständigen Code für die 'Activity1', wo Sie den Dialog anzeigen - es könnte dort sein, wo Sie Änderungen vornehmen müssen. – ishmaelMakitla

0

Für mich musste ich sicherstellen, dass der Dialog vor dem Zugriff mit findViewById im Dialogfeld erstellt wurde. Innerhalb der inneren Klasse, in der ich den Dialog erstellt habe, habe ich in der OnStart-Callback-Funktion auf die Schaltflächen zugegriffen. Ich habe versucht, es außerhalb der Klasse zu tun, als ich .show() sagte, aber es gab mir eine Null-Zeiger-Ausnahme.

Für mich war ich der einzige Weg, auf den ich Schaltflächen im Dialogfeld iDs durch den Dialog zugreifen konnte. Ich konnte nicht einfach tun getActivity() findViewById (R.id.blah)

Hier ist der Code, den ich verwendet:.

 @Override 
    public void onStart(){ 
     super.onStart(); 


     if(getDialog() == null){ 
      return; 
     } 
     else { 

      ImageButton closeButton = (ImageButton)getDialog().findViewById(R.id.closeButton); 

      closeButton.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View v) { 
        getDialog().dismiss(); 
       } 
      }); 

     }