简体   繁体   English

Android-关闭弹出窗口

[英]Android - close popUp window

I have a listView inside a popUp window and I want that when the user clicks on an item in the listview, the popUp window will automatically close. 我在弹出窗口中有一个listView,我希望当用户单击列表视图中的项目时,弹出窗口将自动关闭。 Any idea how I can do that? 知道我该怎么做吗?

  public void popUp(){
        final LayoutInflater layoutInflater = LayoutInflater.from(Record.this);

        final View promptView = layoutInflater.inflate(R.layout.input_language, null);
        final AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(Record.this);
        alertDialogBuilder.setView(promptView);

        String[] languages = {"Arabic","Bulgarian","Catalan"};

        ListView list = (ListView) promptView.findViewById(R.id.inputlang);
        ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
                android.R.layout.simple_list_item_1, languages);
        list.setAdapter(adapter);

        list.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position,
                                    long id) {

                String from_language = ((TextView)view).getText().toString();
                Toast.makeText(getBaseContext(), from_language, Toast.LENGTH_LONG).show();

                // CLOSE POPUP WINDOW
            }
        });

        // setup a dialog window
        alertDialogBuilder.setCancelable(false)
                .setNegativeButton("Cancel",
                        new DialogInterface.OnClickListener() {
                            public void onClick(DialogInterface dialog, int id) {
                                dialog.cancel();
                            }
                        });

        // create an alert dialog
        AlertDialog alert = alertDialogBuilder.create();
        alert.show();
    }

Put this code after alert.show(); 将此代码放在alert.show();

list.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position,
                                    long id) {

                String from_language = ((TextView)view).getText().toString();
                Toast.makeText(getBaseContext(), from_language, Toast.LENGTH_LONG).show();

                // CLOSE POPUP WINDOW
alert.dismiss();
            }
        });

You can do this by changing the order of initialization of the dialog: 您可以通过更改对话框的初始化顺序来做到这一点:

public void popUp(){
    final ListView promptView = new ListView(this);
    final AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(this);
    alertDialogBuilder.setView(promptView);
    // setup a dialog window
    alertDialogBuilder.setCancelable(false)
            .setNegativeButton("Cancel",
                    new DialogInterface.OnClickListener() {
                        public void onClick(DialogInterface dialog, int id) {
                            dialog.cancel();
                        }
                    });

    // create an alert dialog
    final AlertDialog alert = alertDialogBuilder.create();

    String[] languages = {"Arabic","Bulgarian","Catalan"};

    ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
            android.R.layout.simple_list_item_1, languages);
    promptView.setAdapter(adapter);

    promptView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position,
                                long id) {

            String from_language = ((TextView)view).getText().toString();
            Toast.makeText(getBaseContext(), from_language, Toast.LENGTH_LONG).show();

            // CLOSE POPUP WINDOW
            alert.dismiss();
        }
    });

    alert.show();
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM