2

4 つのボタン (アクティビティごとに 1 つ) を含む xml-footer をすべて含む 4 つのアクティビティを取得しました。これらのボタンに onclicklisteners を設定したいと思います (フッターの自作メニューです)。

問題は、コードを再利用できるようにするにはどうすればリスナーを使用できるかということです。私には2つのアイデアがあります:

  1. onclicklistener を実装するクラスを作成し、すべてのアクティビティでボタンを取得してから、リスナー クラスの新しいインスタンスを作成し、button.setOnClickListener(onClickListener) を実行しますイベント?そして、アクティビティを開始するためのインテントをどのように作成しますか? 通常は次のようにします: インテント インテント = 新しいインテント(FromActivity.this, ToAcitivty.class) しかし、FromActivity への参照がありません。

  2. アクティビティから拡張する基本クラスを作成すると、4 つのアクティビティが基本クラスから拡張されます。次に、基本クラスでリスナーをセットアップしたいと思います。ここでの問題は、 Button button1 = (Button)findViewById(R.id.menu_button1); を実行してもボタンへの参照を取得できないことです。button1 は null になります。これは基本クラスではなくアクティビティで行う必要があるため、setEventView も呼び出していません。

何か案は?

ありがとうございました

4

1 に答える 1

1

同じコードは次のとおりです。

    public class MyClass extends Activity implements View.OnClickListener{
        btnA=(Button)findViewById(R.id.btnA);
        btnA.setOnClickListener(this);
        btnB=(Button)findViewById(R.id.btnB);
        btnB.setOnClickListener(this);


    }
    @Override
    public void onClick(View v)
    {
        Button clickedButton = (Button) v;
        switch (clickedButton.getId())
        {
            case R.id.btnA:
                Intent regIntent = new Intent(Home.this,Registration.class);
                startActivityIfNeeded(regIntent, 1);
                break;
            case R.id.btnB:
                //Some code
                break;
        }
    }

(元の最初の行がコード形式で壊れているため編集。

于 2010-12-03T11:43:51.930 に答える