代码之家  ›  专栏  ›  技术社区  ›  anon

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

  •  2
  • anon  · 技术社区  · 14 年前

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

    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 回复  |  直到 14 年前
        1
  •  1
  •   Andreas Dolk    14 年前

    this article 我能帮上大忙。据我所知,按“上一步”就像取消对话框(就像按“取消”)。它们展示了如何使对话框不可取消,以及如何实现侦听器来捕获“取消”事件。