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 .

  • Einfügen von Kontakten in Android 2.2
  • Der ausgewählte VM-Debug-Port konnte nicht geöffnet werden (8700)
  • So verschieben Sie die Android-Maps-API-Kompassposition
  • Null-Pointer-Ausnahme bei Verwendung von SearchView mit AppCompat
  • Geeignete Vervielfältigung von Matrizen für Rotation / Übersetzung
  • Android-Browser-Bug? Div overflow scrollen
  • 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); 

  • Was sind Best Practices für die Verwendung von AES-Verschlüsselung in Android?
  • SecurityException: Dienst darf nicht gestartet werden Intent act = com.google.android.c2dm.intent.REGISTER
  • Weird Verhalten beim Streaming mit Android MediaPlayer auf HTC Desire mit Android 2.2
  • Näherungssensor auf Galaxy S4 (Air Gesures)
  • Wie zu beheben "Prozess ist schlecht" Fehler für ein Android Widget?
  • Launch facebook App aus anderen App
  • 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.