-1

さて、私は周りに50〜60個のボタンがあるアプリを持っていて、他のパッケージ内のすべてのクリックメソッドを処理したいとします。パッケージapp.testのクリックを処理するにはどうすればよいですか。パッケージapp.test.clicksのクラス1クラスクリック?

4

3 に答える 3

2

OnClickListenerを実装するクラスを作成します。

 public class ClickHandler implements OnClickListener

 {
     public void onClick(View v) {

    //This method will be automatically implemented once OnClickListener is implemented. 

     }

 }

次に、onClickistenerを次のようにボタンに設定します。

button.setOnClickListener(new ClickHandler());

そして今、onClick()内でこれを行うだけです、

 public void onClick(View v) {

        if(v.getId()==R.id.button)
            {
                //your stuff here. 
            } 

    }

コンテキストオブジェクトが必要な場合は、を試してくださいv.getContext();。「v」はonClick()からのパラメータです。

ClickHandlerクラスのパッケージ名をアクティビティにインポートしてください。

ただし、これを各アクティビティの内部クラスとして使用すると、はるかに優れています。

于 2012-12-13T07:10:15.290 に答える
1
public class HeaderActivity extends Activity implements OnClickListener{
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    ((Button)findViewById(R.id.home)).setOnClickListener(this);
    ((Button)findViewById(R.id.search)).setOnClickListener(this);
    ((Button)findViewById(R.id.list)).setOnClickListener(this);
    ((Button)findViewById(R.id.filter)).setOnClickListener(this);

}

@Override
public void onClick(View v) {
    // TODO Auto-generated method stub
    switch(v.getId()){
    case R.id.home:

        Intent home=new Intent(this,HomeScreen.class);
        startActivity(home);
        finish();

        break;
    case R.id.search:
        Intent search=new Intent(this,SearchScreen.class);
        startActivity(search);
        finish();
        break;

    case R.id.list:
        Intent list=new Intent(this,ListScreen.class);
        startActivity(list);
        finish();
        break;

    case R.id.filter:
        Intent filter=new Intent(this,FilterScreen.class);
        startActivity(filter);
        finish();
        break;

    default :  break;   

    }
}
于 2012-12-13T07:14:30.063 に答える
0

まあ、実装するのは良い考えではないと思います。ただし、Contextsをclicksクラスに渡す必要があります。コンテキストオブジェクトから、クリックされたコントロールにアクセスでき、それに応じてロジックを記述できます。

于 2012-12-13T07:08:13.337 に答える