0

ボタンをクリックした後、アンドロイドで進行状況ダイアログを非表示にしたくない、表示を維持しながらのみいくつかの操作を実行したいDialog、ダイアログを作成するための次のコードがあります。

public Dialog onCreateDialog(int id){
        switch(id){
        case 0 :
            // Alert Dialog
            return null;
        case 1:

            progressDialog = new ProgressDialog(this);
            progressDialog.setIcon(R.drawable.ic_launcher);
            progressDialog.setTitle("Play audio file");

            progressDialog.setCancelable(false);
            progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);

    /*      progressDialog.setButton(DialogInterface.BUTTON_POSITIVE,"Play",
                    new DialogInterface.OnClickListener() {

                public void onClick(DialogInterface dialog, int which) {

                    Toast.makeText(getBaseContext(),"Hide clicked!",Toast.LENGTH_SHORT).show();
                }
            });*/

            progressDialog.setButton(DialogInterface.BUTTON_NEGATIVE, "Close", new DialogInterface.OnClickListener() {

                public void onClick(DialogInterface dialog, int which) {
                    Toast.makeText(getBaseContext(),"Cancel clicked!",Toast.LENGTH_SHORT).show();

                }
            });
            progressDialog.setButton("Play", new DialogInterface.OnClickListener() {

                public void onClick(DialogInterface dialog, int which) {
                    Toast.makeText(getBaseContext(),"Cancel clicked!",Toast.LENGTH_SHORT).show();

                }
            });
            return progressDialog;
        }
        return null;

    }
4

1 に答える 1

0

カスタムレイアウトを内部に持つAlertDialogを使用しました。カスタムレイアウトでonClickListenersを制御することにより、ダイアログを非表示にするタイミングを決定できます。ダイアログについてはよくわかりませんが、これは私にとってはうまくいき、ProgressDialogでそれができるかどうかはわかりませんが、あなたにとってもうまくいくはずです。

    @Override
    public void openDialog(Context context) {

        // declare the dialog object
        AlertDialog.Builder builder;
        AlertDialog alertDialog = null;

        // inflate the layout to use inside it
        View layout = ((Activity)context).getLayoutInflater().inflate(R.layout.list_selector_horizontal,null, false);

        TextView text = (TextView) layout.findViewById(R.id.list_selector_textView1);
        text.setText("Select a product:");

        // set the dialog to use the layout
        builder = new AlertDialog.Builder(context);
        builder.setView(layout);                        
        alertDialog = builder.create(); 

        // *important* Set this to false to stop users dismissing the dialog when they tap outside of it
        alertDialog.setCanceledOnTouchOutside(false);

        // populate the layout with some more views
        LinearLayout scrollContainer = (LinearLayout) layout.findViewById(R.id.list_selector_linearLayout2);                
        for(int i = 0;i<products.size();i++){
            Product product = products.get(i);
            View view = product.getView(context);

            // set the onClickListener for the product view
            view.setOnClickListener(new ProductListOnClickListener(alertDialog, product, this, v));
            view.setPadding(10, 10, 10, 10);
            scrollContainer.addView(view);
        }

        // show the dialog
        alertDialog.show();

    }

次に、onClickListenerで:

class ProductListOnClickListener implements OnClickListener{

        private AlertDialog alertDialog;                    
        private Product p;
        private View view;
        private boolean dismiss = false;

        public ProductListOnClickListener(AlertDialog alertDialog, Product p, View view) {              
            this.alertDialog = alertDialog;
            this.p = p;
            this.view = view;
        }

        @Override
        public void onClick(View v) {
            // do whatever

            if(dismiss){
                // dismiss dialog
                alertDialog.dismiss();
            }
        }

    }
于 2012-05-14T19:00:59.193 に答える