0

2 つのカスタム ダイアログ ボックスを作成しました。1 つは about で、もう 1 つは alert です。その時にトウカスタムダイアログボックスで交互に選択すると、ボタンが機能しません。

サンプルコード

AlertDialog.Builder builder;
Context mContext;
LayoutInflater inflater;
View layout;
Dialog dialog;
@Override
protected Dialog onCreateDialog( int id ) 
{ 
    switch ( id ) 
    {
        case 1:
            builder = null;
            mContext = this;
            inflater = ( LayoutInflater ) mContext.getSystemService( LAYOUT_INFLATER_SERVICE );
            layout = inflater.inflate( R.layout.alert_page, ( ViewGroup ) findViewById( R.id.alert_Root ) );
            Button alertUser = ( Button ) layout.findViewById( R.id.alert_Submit );
            alertUser.setOnClickListener( new View.OnClickListener()
            {
                public void onClick( View v )
                {
                    try
                    {
                        dialog.dismiss();
                    }
                    catch ( Exception e ) 
                    {
                        Toast.makeText( getBaseContext(), e.getMessage(), Toast.LENGTH_SHORT ).show();
                    }
                }
            });
            builder = new AlertDialog.Builder( mContext );
            builder.setView( layout );
            dialog = builder.create();
            dialog.show();
            break;

        case 2:
            builder = null;
            mContext = this;
            inflater = ( LayoutInflater ) mContext.getSystemService( LAYOUT_INFLATER_SERVICE );
            layout = inflater.inflate( R.layout.about_page, ( ViewGroup ) findViewById( R.id.about_Root ) );
            Button aboutUser = ( Button ) layout.findViewById( R.id.about_Submit );
            aboutUser.setOnClickListener( new View.OnClickListener()
            {
                public void onClick( View v )
                {
                    Log.e("About","About");
                    try
                    {
                        Log.e("About1","About");
                        dialog.dismiss();
                    }
                    catch ( Exception e ) 
                    {
                        Log.e("About","About12");
                        Toast.makeText( getBaseContext(), e.getMessage(), Toast.LENGTH_SHORT ).show();
                    }
                }
            });
            builder = new AlertDialog.Builder( mContext );
            builder.setView( layout );
            dialog = builder.create();
            dialog.show();
            break;
    }
    return dialog;
}

たとえば、私は 2 つのボタンを使用しています。最初のボタンが呼び出されcase 1、2 番目のボタンが呼び出されcase 2ます。

最初にアクセスするボタンを選択してからcase 1、カスタムダイアログボックスのalertUserボタンを選択しsuccessfully Exit the dialog boxました。

すぐに、アクセスするための 2 番目のボタンが選択されcase 2、カスタム ダイアログ ボックスaboutUserボタンが選択されますsuccessfully Exit the dialog box

すぐに選択された後、最初のボタンにアクセスcase 1してから、カスタムダイアログボックスのalertUserボタンを選択しますNow the dialog box does not exist (button is now not working)

コードが間違っているところ。この問題をどのように解決しましたか。

前もって感謝します。

4

2 に答える 2

0

次のようにします。

Button button1=(Button) findViewById(R.id.btn1);
Button button2=(Button) findViewById(R.id.btn2);

 button1.setOnClickListener(this);
 button2.setOnClickListener(this);

OnClickListener で Activity を実装し、onClick として取得する未実装のメソッドを追加します。

public void onClick(View v) {
switch(v.getId()){
        case R.id.btn1:
            //write code
            break;
        case R.id.btn2:
            //write code
            break;
        }
}

ボタンのクリックイベントでやりたいことは何でもします。

于 2012-07-11T07:54:54.447 に答える
0

ダイアログを として呼び出していshowDialog(int)ます。この行を削除dialog.show();しますonCreateDialog

dismissDialog(int)代わりにダイアログを閉じるために呼び出しますdialog.dismiss();

于 2012-07-11T10:55:20.377 に答える