2011-08-27 9 views
16

Z działania mogę łatwo skonfigurować onActivityResult() i zadzwonić pod numer i wszystko działa poprawnie.wewnątrz okna dialogowego systemu Android, jak skonfigurować metodę onActivityResult dla funkcji startActivityForResult?

Teraz muszę zadzwonić pod numer startActivityForResult() z okna dialogowego. Ale nie mogę skonfigurować onActivityResult(), uważam, że Dialog nie jest Activity.

Jak uzyskać wynik?

Próbuję czegoś takiego w oknie dialogowym, ale nie udało się.

//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); 
+0

Proszę podać kod tworzenia i uruchamiania okna dialogowego. – Jin35

+0

@ tony-p-lee dowolne rozwiązanie –

Odpowiedz

0

Użyj pakietu zgodności wówczas okno zbudować używając DialogFragment

5

Można zadeklarować swoją Activity mieć Dialog tematu. Spójrz w tym SO pytanie: Android Activity as a dialog

byłoby to zmienić w pliku AndroidManifest.xml:

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

Powinieneś być w stanie wykorzystać startActivityForResult() jak normalne. Wiem, że przykładowy program Android używa czegoś podobnego do zwrócenia urządzenia Bluetooth, które wybierzesz z listy Dialog.

+0

To powinno być oznaczone jako odpowiedź. Jest to jedyny sposób robienia tego, czego się spodziewasz. –

+3

To nie jest odpowiedź. Pytanie brzmi "Jak uruchomićActivityForResult() z okna dialogowego". Ale nie "Jak deklarować aktywność jako okno dialogowe". – Cheung

2

jeśli dialogowe jest fragmentem dialogowe można użyć

getActivity().startActivityForResult(intent); 

w ten sposób wynik jest wysyłany do działalności, która stworzyła dialogowe

1

Można użyć DialogFragment zamiast Dialog. Ponieważ Okno dialogowe jest wtórne do jego aktywności.Po uruchomieniu działalności z startActivityForResult(), Twój dialogowe zostanie odwołany

Innym przykładem Użyj oddzwaniania

Tworzenie interfejsu

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

Tworzenie 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"); 
} 

} 

W swojej działalności

@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); 
     } 
    } 
}; 

Wyjście

Kiedy odrzucenie DialogFragment będzie zobaczyć "Hello" Zaloguj się swoim Aktywny

0

Na konstruktora dialogowym przekazać referencję aktywności rodzica, a następnie można użyć w oknie dialogowym w ten sposób,

parentActivity.startActivityForResult(intent, CODE); 
Powiązane problemy