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