3

onClick イベントを持つ AlertDialog を含む onClickListener イベントがあります。親の onClick イベント ビューを取得したいと思います。例:

View.OnClickListener listener = new View.OnClickListener(){
    public void onClick(View v){
        //need to pass v to alert's onClickListener
        AlertDialog.Builder alert = new AlertDialog.Builder(MyClass.this);
        alert.setPositiveButton("Go", new DialogInterface.OnClickListener(){
            public void onClick(DialogInterface dialog,int which){
                //need parent onClick's View as v
                String str = v.getTag().toString();
                Toast.makeText(getApplicationContext(),str,Toast.LENGTH_SHORT).show();
            }
        });
    }
};

これを達成する方法はありますか?これはプログラムで作成された複数のアイテムに適用されるため、 onclicklistener 内で (View)findViewById(id) を呼び出すことはできません

4

2 に答える 2

7

変化する

public void onClick(View v)

public void onClick(final View v)

これにより、ダイアログ ボタンの onClickListener 内のクリックされたビューにアクセスできます。

于 2012-10-16T18:27:46.443 に答える
0

あなたは電話するのを忘れた

alert.show();

これがないと、ダイアログは表示されません

完全なソース コード:

    someViewItem.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(final View v) {


                AlertDialog.Builder alert = new AlertDialog.Builder(MyActivity.this);
                alert.setMessage("abcd");
                alert.setPositiveButton("Go",
                        new DialogInterface.OnClickListener() {
                            public void onClick(DialogInterface dialog,
                                    int which) {

                                String str = "aaa";
                                Toast.makeText(getApplicationContext(),
                                        str, Toast.LENGTH_SHORT).show();
                            }
                        });
                alert.show();


            }
        });
于 2013-01-09T23:58:41.000 に答える