好吧,假设我有一个类似50-60个按钮的应用程序,我想处理其他包内的所有点击方法。我怎么能处理包app.test的点击;包app.test.clicks类中的第一课点击?
答案 0 :(得分: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类的包名称导入Activity。
但如果你把它作为每个Activity的内部类会更好。
答案 1 :(得分: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;
}
}
答案 2 :(得分:0)
嗯,我认为这不是一个好主意。但是,您需要将上下文传递给点击类。从上下文对象中,您将能够访问已单击的控件,并且可以相应地编写逻辑。