0

if 条件または case ステートメントを使用して要素の条件をプログラムで変更する例をたくさん見てきました...ヤダヤダ。ユーザーがクリックした内容に基づいて、ボタンの値を変更する必要があります。以下は私が現在持っているコードです。

 Button btnOpenPopup = (Button)findViewById(R.id.polarity);
        btnOpenPopup = (Button) findViewById(R.id.color); 
final Button finalBtnOpenPopup = btnOpenPopup;         

btnOpenPopup.setOnClickListener(new Button.OnClickListener(){CONTINUES TO OTHER FUNCTIONS }

基本的に、どのボタンが押されたかを知る必要があります。次に、それを findViewById() 関数に動的に入力します。すなわち

btnOpenPopup = (Button) findViewById(R.id.DYNAMTICVALUEOFBUTTONUSERHASPRESSED);

このようにして、コードの最後のボタン部分に到達するまでに、ユーザーがクリックした値を取得します。ボタンを 1 つだけにしたい場合、または異なる構成で 1 マイルのページを深くしたい場合 (理想的ではありません)、コードは機能します。

私がこれまでに見たすべての例は、ユーザーがボタンをクリックした後 (これは私が望んでいるものです) ですが、上記のコードが示すように静的にボタン名を付けていますが、非常に静的です。

すべてが理にかなっていることを願っています。

アップデート:

私は状況を混乱させた可能性があると思います。以下は残りのコードです。うまくいけば、これはコンテキストを提供します。btnOpenPopup は、新しいウィンドウが実際にポップアップするコマンドを実行する呼び出しで使用されるものと同じままである必要があります。うまくいけば、これは私が達成しようとしていることのコンテキストをもう少し提供します.

 final Button finalBtnOpenPopup = btnOpenPopup;
        btnOpenPopup.setOnClickListener(new Button.OnClickListener(){
            @Override
            public void onClick(View arg0) {LayoutInflater layoutInflater = (LayoutInflater)getBaseContext().getSystemService(LAYOUT_INFLATER_SERVICE);
                View popupView = layoutInflater.inflate(R.layout.meditationpopup, null);

                //set the title of the popup
                TextView titletext = (TextView) popupView.findViewById(R.id.chakratitle);
                titletext.setText(activityName);

                if (activityName.equals("Root"))
                {
                    switch (arg0.getId())
                    {
                        case R.id.color:
                            //Rename the string so to get the value from the string xml
                            String stringName = activityName.toLowerCase().replaceAll(" ","")+"color";
                            TextView desctext = (TextView) popupView.findViewById(R.id.popupDesc);
                            desctext.setText(getString(getStringResource(getApplicationContext(),stringName)));
                        break;
                        case R.id.polarity:
                            //Rename the string so to get the value from the string xml
                            String polarityString = activityName.toLowerCase().replaceAll(" ","")+"polarity";
                            TextView polarityDesc = (TextView) popupView.findViewById(R.id.popupDesc);
                            //polarityDesc.setText(activityName);
                            polarityDesc.setText(getString(getStringResource(getApplicationContext(),polarityString)));
                        break;
                    }
                }
4

4 に答える 4

1
 int[] id={R.id.button1,R.id.button2};
 Button b=(Button)findViewById(id[i]);
于 2013-04-27T09:03:43.353 に答える
0

Button.OnClickListener の onClick メソッドには View パラメータがあります。そのビューで getId() を呼び出して、クリックされたボタンの ID を取得できます。

于 2013-04-27T05:47:36.813 に答える