Ich habe versucht, jetzt für ein paar Stunden meinen Kopf herum zu bekommen.Startdialog für Ergebnis, um Wert zur Hauptaktivität zurückzugeben
Ich habe eine Haupt-Fragment-Klasse, dann von der OnClick, die ich von einem ImageView in dieser Klasse eingerichtet habe, ich beginne ein Dialog-Fragment mit einer einfachen "Ja" oder "Abbrechen" -Option.
Wie würde ich es so machen, dass, wenn der Benutzer auf "Ok" klickt, wird es dann einen Ergebniscode zurück zu meinem Hauptfragment senden und ihm mitteilen, dass Code ausgeführt werden soll (In meinem Fall setze ich Hintergrundbild).
Das klingt einfach, aber kann nicht scheinen, es herauszufinden. Danke im Voraus.
Onclick, wo ich irgendwie möchte das Ergebnis erhalten zurück zu:
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
final View v = inflater.inflate(R.layout.image_detail_fragment,
container, false);
mImageView = (RecyclingImageView) v.findViewById(R.id.imageView);
mImageView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
MyDialogFragment dialog = new MyDialogFragment();
dialog.show(getActivity().getFragmentManager(),
"MyDialogFragment");
}
public void onDialogOKPressed() {
((ImageDetailFragment) (DialogFragment.this.getParentFragment()))
.onDialogOKPressed();
dismiss();
}
});
return v;
}
Dialog Klasse:
class MyDialogFragment extends DialogFragment {
private Button ButtonOk;
private Button ButtonCancel;
public MyDialogFragment() {
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.prompt, container);
ButtonOk = (Button) view.findViewById(R.id.button1);
ButtonCancel = (Button) view.findViewById(R.id.button2);
getDialog().setTitle("Set Wallpaper?");
ButtonOk.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
((MyDialogFragment)(DialogFragment.this.getActivity())).onDialogOKPressed();
dismiss();
}
});
ButtonCancel.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
MyDialogFragment.this.dismiss();
}
});
return view;
}
}
Wie würde ich dann das Ergebnis zurückholen, damit die Hauptaktivität meinen Code ausführen kann oder nicht? Das war meine Frage :) – Jack
Dies nennt Ihre neue Methode nur in Ihrer Aktivität. Also führe deinen Code von dieser neuen Methode aus. Es wird nicht aufgerufen, wenn die OK-Taste nicht gedrückt wird. Befreie den if/else-Block mit dem Ergebniscode. Es sieht so aus, als ob Sie einen Hintergrund festlegen möchten. Legen Sie also bei der neuen Methode das Hintergrundbild fest. – Tenfour04
Alternativ könnten Sie die neue Methode in Ihr Fragment einfügen und '((MyActivity) getActivity()) '' 'ersetzen (' (MyFragment) getParentFragment()) '. – Tenfour04