3

私はアンドロイド開発が初めてです。疑問があります。ボタンを追加して次のように初期化できることを知っています

Button b1=(Button) findViewById(R.id.button1);

また、XML ファイルで関数名を指定することもできます。

  android:onClick="click_event"

私の疑問は、どれが最良かつ効率的な方法ですか? ハードコーディングされたものではなく @string リソースを使用する方が良いと言っているように。

4

1 に答える 1

10

あなたは混乱していると思います。あなたが与える例は2つの異なるものです。

ボタンの追加

この行

Button b1=(Button) findViewById(R.id.button1);

を追加しませんButton。のインスタンスを宣言して初期化し、現在膨張している xmlのButtonを参照します。Buttonidbutton1

だからあなたのxmlにはどこかにあるでしょう

<Button
     android:id="@+id/button1"
     <!-- other properties -->
/>

Buttonプログラムで追加できます

Button bt1 = new Button(this);
// give it properties

ただし、ここではプログラムでパラメーター、プロパティを指定し、それをインフレートされたlayout

オンクリック

それonClick()は、あなたが自分の状況で最も簡単で最善だと感じるものに依存します. 私はしばしばそのように xml で宣言するのが好きですが、いくつかの方法で行うことができます。このメソッドを使用すると、このような関数がpublicあり、パラメーターを 1 つだけ取り、そのパラメーターがView

 public void clickEvent(View v)
{
    // code here
}

名前も変更したので、xmlは次のようになります

<Button
     android:id="@+id/button1"
     <!-- other properties -->
     android:onClick="clickEvent"/>

onClick()次のようなものでJavaに設定することもできます

Button b1=(Button) findViewById(R.id.button1);
b1.setOnClickListener(new OnClickListener()
{
    @Override
    public void onClick(View v)
    {
        // code here
    }
});

また

 Button b1=(Button) findViewById(R.id.button1);
b1.setOnClickListener(this);

    @Override
    public void onClick(View v)
    {
        // code here
    }

宣言に追加する必要がある最後の方法に注意してimplements OnClickListenerくださいActivity

public class MyActivity extends Activity implements OnClickListener
{

Listener次のように変更して、独自のクリックを作成することもできます

b1.setOnClickListener(myBtnClick);

次に、次のようなものでインスタンスを作成します

public OnClickListener myBtnClick = new OnClickListener()
{
    @Override
    public void onClick(View v)
    {
        // click code here      
    }
};

これを複数Buttonの に使用して をオンにするか、パラメーターをidチェックして、どれがクリックされたかを確認するか、異なる に対して個別に作成することができます。ViewButtonListenersButton

于 2013-08-19T17:36:50.200 に答える