In Android Dialog, wie man onActivityResult für startActivityForResult einrichten?

Von einer Aktivität kann ich einfach das onActivityResult() startActivityForResult() und onActivityResult() anrufen und alles funktioniert gut.

Nun muss ich startActivityForResult() aus dem Dialog aufrufen. Aber ich kann das onActivityResult() nicht onActivityResult() , ich glaube, Dialog ist keine Activity .

Wie bekomme ich das Ergebnis?

Ich versuche so etwas in einem Dialog, aber es ist gescheitert.

 //create new Intent Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); intent.putExtra(MediaStore.EXTRA_OUTPUT, m_PicUri); ((Activity) getContext()).startActivityForResult(intent, Const.TAKE_PIC_ACTIVITY_RET_CODE); 

  • Ändern Sie die Höhe des benutzerdefinierten Dialogs in Dialog Fragment
  • Android bekommt volle Breite für benutzerdefinierte Dialog
  • Android: Verwenden von Standard-Stil in einem benutzerdefinierten Dialog-Titel
  • Android benutzerdefinierte dialog hintergrund
  • Ändern der AlertDialog.Builder-Schaltflächenfarbe
  • Was ist los mit dem ICS Holo Dialog Thema?
  • DataBinding mit Android-Dialog
  • Wie schaffen Sie eine transparente Aktivität, die den Startbildschirm überlagern kann, aber nicht entlassen wird, wenn die Home- oder Back-Taste gedrückt wird?
  • 5 Solutions collect form web for “In Android Dialog, wie man onActivityResult für startActivityForResult einrichten?”

    Sie können Ihre Activity deklarieren, um ein Dialog Thema zu haben. Schau in diese SO-Frage: Android-Aktivität als Dialog

    Sie würden dies in Ihrer AndroidManifest.xml Datei AndroidManifest.xml :

     <activity android:theme="@android:style/Theme.Dialog" /> 

    Du solltest startActivityForResult() wie normal verwenden. Ich weiß, die BluetoothChat Beispiel Android-Programm verwendet etwas ähnliches, um die Bluetooth-Gerät, das Sie aus einer Dialog Liste wählen.

    Wenn dein Dialog ein Dialogfragment ist, kannst du verwenden

     getActivity().startActivityForResult(intent); 

    Auf diese Weise wird das Ergebnis an die Aktivität gesendet, die den Dialog erstellt hat

    Sie können DialogFragment anstelle von Dialog verwenden. Denn der Dialog ist sekundär zu seiner Tätigkeit. Wenn du die Aktivität mit startActivityForResult () startet, wird dein Dialog entlassen

    Ein anderes Beispiel Verwenden Sie Rückruf

    Schnittstelle erstellen

      public interface DialogCallback { void getResults(String results); } 

    Erstellen Sie DialogFragment

     public class DialogFragment extends DialogFragment { DialogCallback dialogCallback; public DialogFragment setCallBack(DialogCallback dialogCallback){ this.dialogCallback = dialogCallback; return this; } @NonNull @Override public Dialog onCreateDialog(Bundle savedInstanceState) { return super.onCreateDialog(savedInstanceState); } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.your_layout, container, false); return view; } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); } @Override public void onDismiss(DialogInterface dialog) { super.onDismiss(dialog); dialogCallback.getResults("hello"); } } 

    In deiner Tätigkeit

     @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); new DialogFragment().setCallBack(dialogCallback).show(getFragmentManager(),""); } DialogCallback dialogCallback = new DialogCallback() { @Override public void getResults(String results) { if(results!=null){ Log.e(TAG,results); } } }; 

    Ausgabe

    Wenn du das DialogFragment entlassen wirst, wirst du das "hallo" ansehen

    Verwenden Sie das Kompatibilitätspaket und erstellen Sie dann Ihren Dialog mit DialogFragment

    Auf dem Dialog-Konstruktor übergeben Sie die Referenz der übergeordneten Aktivität, dann können Sie im Dialog wie folgt verwenden,

     parentActivity.startActivityForResult(intent, CODE); 
    Das Android ist ein Google Android Fan-Website, Alles ├╝ber Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.