2 Stimmen

Welche Methode wird aufgerufen, wenn der Benutzer die Zurück-Taste drückt, wenn ein Dialog angezeigt wird?

Ich habe einen Dialog auf folgende Weise definiert:

public void displayAvailableDevices(Vector<UserDevice> availableDevices) {

        connector.setDevicesFound(true);
        UserDevice[] devices = new UserDevice[availableDevices.size()];

        for (int i = 0; i < availableDevices.size(); i++) {
            devices[i] = availableDevices.elementAt(i);
        }

        Arrays.sort(devices);

        Vector<UserDevice> sorted = new Vector<UserDevice>();
        for (int j = 0; j < devices.length; j++) {
            sorted.add(devices[j]);
        }

        allAvailableDevices = sorted;

        connector.stopNeighbourDiscovery();
        if (dialog != null) {
            dialog.dismiss();
            checkedUser = null;
        }
        dialog = new Dialog(this);
        dialog.setContentView(R.layout.available_users);
        dialog.setTitle("Available Devices");

        RelativeLayout rootLayer = (RelativeLayout) dialog.findViewById(R.id.dialogRoot);
        rootLayer.setBackgroundColor(Color.WHITE);

        ListView userTable = (ListView) dialog.findViewById(R.id.userList);
        adapter = new UserAdapter();
        userTable.setAdapter(adapter);
        userTable.setOnItemClickListener(new UserListener());

        DisplayMetrics dm = new DisplayMetrics();
        getWindowManager().getDefaultDisplay().getMetrics(dm); 

        connect = (Button) dialog.findViewById(R.id.userList_connect);
        connect.setMinWidth(dm.widthPixels / 2);
        connect.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                if (checkedUser != null) {
                    dialog.dismiss();
                    connector.connectToDevice(checkedUser);
                }
            }

        });

        Button start = (Button) dialog.findViewById(R.id.userList_start);
        start.setMinWidth(dm.widthPixels / 2);
        start.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                dialog.dismiss();
                startProfileView(); 
            }

        });

        Button refresh = (Button) dialog.findViewById(R.id.userList_refresh);
        refresh.setMinWidth(dm.widthPixels / 2);
        refresh.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                dialog.dismiss();
                getGameBaseLayer().resetAvailableUserDevices();
                connector.refresh();
            }

        });

        Button cancel = (Button) dialog.findViewById(R.id.userList_cancel);
        cancel.setMinWidth(dm.widthPixels / 2);
        cancel.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                finish();
            }

        });

        dialog.show();
        if (checkedUser == null) {
            connect.setEnabled(false);
        }

    }

Wenn dieses Dialogfeld angezeigt wird und der Benutzer die Zurück-Taste drückt, wird das Dialogfeld geschlossen. Ich möchte jedoch einige weitere Verarbeitungen vornehmen, aber wie kann ich erkennen, ob der Benutzer die Schaltfläche "Zurück" gedrückt hat?

1voto

Andreas Dolk Punkte 110776

Ich bin mir ziemlich sicher, dass dieser Artikel kann sehr hilfreich sein. Soweit ich weiß, ist das Drücken von "BACK" wie das Abbrechen des Dialogs (wie das Drücken von "CANCEL"). Sie zeigen, wie man einen Dialog unabbrechbar macht und wie man einen Listener implementiert, um die "Abbrechen"-Ereignisse abzufangen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X