Android: Wie man ein modales Dialogfeld oder eine ähnliche modale Verhalten?

Diese Tage, die ich arbeite an der Simulation modal-dialog in Android. Ich habe gegoogelt eine Menge, es gibt viel Diskussionen, aber leider gibt es nicht viele Optionen, um es zu bekommen modal. Hier einige hintergrund

Dialoge Modale Dialoge und Blockin

Dialoge /AlertDialogs: Wie "block execution" während der dialog ist up (.NET-Stil)

Es gibt keinen geraden Weg, um modale Verhalten, dann kam ich auf 3 mögliche Lösungen

1. Verwenden Sie einen dialog-Themen-Aktivität, wie dies thread gesagt, aber ich kann immer noch nicht machen Haupttätigkeit wirklich warten, für dialog-Aktivität zurück. Haupttätigkeit wandte sich der Stopp-status und bekam dann neu gestartet.

2. Erstellen Sie einen worker-thread, und verwenden thread-Synchronisation. Jedoch, es ist eine riesige refactoring job für meine app, jetzt habe ich einen einzigen Haupt-activity und einem service in der Haupt-UI-thread.

3. Nehmen Sie über event-handling innerhalb einer Schleife, wenn es ein modales Dialogfeld, und beende Schleife, wenn die Dialogbox geschlossen wird. Eigentlich ist es der Weg für den Bau eines echten modalen dialog, was es genau bedeutet in Windows. Ich habe noch nicht einen Prototypen auf diese Weise.

Ich würde noch gerne simulieren, es mit einem dialog-Themen-Aktivität,

1. start-dialog-Aktivität durch startActivityForResult()

2. bekomme aus onActivityResult()

Hier einige Quelle

public class MainActivity extends Activity {

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    MyView v = new MyView(this);
    setContentView(v);
}

private final int RESULT_CODE_ALERT = 1;
private boolean mAlertResult = false;
public boolean startAlertDialog() {
    Intent it = new Intent(this, DialogActivity.class);
    it.putExtra("AlertInfo", "This is an alert");
    startActivityForResult(it, RESULT_CODE_ALERT);

    //I want to wait right here
    return mAlertResult;
}

@Override
protected void onActivityResult (int requestCode, int resultCode, Intent data) {
    switch (requestCode) {
    case RESULT_CODE_ALERT:
        Bundle ret = data.getExtras();
        mAlertResult = ret.getBoolean("AlertResult");
        break;
    }
}
}

Den Aufrufer startAlertDialog, block-Ausführung und Ergebnis zu erwarten. Aber startAlertDialog sofort zurückgegeben, natürlich, und Haupt-activity ging in STOP-Zustand während DialogActivity war.

Ist also die Frage, wie man Haupttätigkeit wirklich warten, bis Ergebnis?

Danke.

InformationsquelleAutor der Frage fifth | 2011-05-25

Schreibe einen Kommentar