0

Ich habe ein Dialogfragment und seine Ansicht besteht aus einer einfachen Suchleiste und positiven und negativen Schaltflächen. Wenn ich den Dialogfragmentonclick ablehne, wird ein neues Dialogfragment erstellt und angezeigt. Nach dem zweiten Klick auf die Schaltfläche wird der Dialog geschlossen, aber mein Wunsch wird nach dem ersten Klick abgewiesen. Auch sollte ich beachten, dass meine Aktivität zwei Fragmente hostet und ich dialog.show() vom ersten Fragment anrufe.DialogFragment abbrechen onClick funktioniert nicht richtig

MyListFragment.java

FragmentManager manager = getFragmentManager(); 
fndSrchFragment dialog = new fndSrchFragment(); 
dialog.setTargetFragment(MyListFragment.this, REQUEST_COLOR); 
dialog.show(manager, SRCH_FND); 

fndSrchFragment.java

public class fndSrchFragment extends DialogFragment { 
. 
. 
//variable definition 
@Override 
public Dialog onCreateDialog(Bundle savedInstanceState) { 
View view = LayoutInflater.from(getActivity()).inflate(R.layout.color_picker, null); 
rSb=(SeekBar) view.findViewById(R.id.r_seek_bar); 
. 
. 
//code for interacting with seekbar 
. 
. 
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); 
    builder.setView(view); 
    builder.setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() { 
     @Override 
     public void onClick(DialogInterface dialog, int which) { 
      int ccolor = android.graphics.Color.rgb(rComponent, gComponent, bComponent); 
      sendResult(Activity.RESULT_OK, ccolor); 
      // two click is needed for dismiss which I don't know why? 
      dismiss(); 
     } 
    }); 
    builder.setNegativeButton(android.R.string.cancel, new DialogInterface.OnClickListener() { 
     @Override 
     public void onClick(DialogInterface dialog, int which) { 
      // two click is needed for dismiss which I don't know why? 
      dismiss(); 
     } 
    }); 
    return builder.create(); 
} 

Vielen Dank im Voraus.

+0

Ich habe auch manchmal Probleme damit, weiß nicht warum ... was passiert, wenn Sie dialog.dismiss() verwenden; ? – Opiatefuchs

+0

Danke @Opiatefuchs. Es hat keine Wirkung (mit dialog.dismiss()). –

+0

'return builder.create()' ... erstellen Sie den Dialog innerhalb einer Methode? Sie haben das nicht gepostet ... – Opiatefuchs

Antwort

1

Richten Sie einen Protokollbefehl in Ihrem onMenuItemActionExpand() ein. Ich wette, Sie werden sehen, dass diese Methode aufgerufen wird, nachdem Sie den Dialog geschlossen haben. Am wahrscheinlichsten wird diese Methode vom System aufgerufen, sobald der Fokus vom Dialog auf die Aktivität zurückgegeben wird. Du solltest aber deinen Anruf an dialog.show() innerhalb eines so etwas wie onOptionsItemSelected(MenuItem item) statt.

+0

Danke @JCricket. Es ist wahrscheinlich die Ursache des Problems. Ich werde die Protokollausgabe testen. –

+0

Danke @JCricket. Hat funktioniert!!! –