Какой метод вызывается, когда пользователь нажимает кнопку «Назад», если отображается диалоговое окно? - PullRequest
2 голосов
/ 19 июля 2010

Я определил диалог следующим образом:

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

    }

Если отображается это диалоговое окно и пользователь нажимает кнопку «Назад», диалоговое окно закрывается. Однако я хотел бы выполнить дальнейшую обработку, но как я могу определить, нажал ли пользователь кнопку «Назад»?

1 Ответ

1 голос
/ 19 июля 2010

Я весьма уверен, что эта статья может очень помочь. Насколько я понимаю, нажатие кнопки «НАЗАД» похоже на отмену диалога (например, нажатие кнопки «ОТМЕНА»). Они показывают, как сделать диалог невозможным и как реализовать прослушиватель для перехвата событий «отмены».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...