如果显示对话框,用户按下后退按钮时会调用哪种方法?

时间:2010-07-18 20:24:27

标签: java android user-interface

我按照以下方式定义了一个对话框:

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 个答案:

答案 0 :(得分:1)

我非常肯定this article可以提供很多帮助。据我所知,按“BACK”就像取消对话框一样(比如按'CANCEL')。它们展示了如何使对话不可取消以及如何实现监听器以捕获'取消'事件。