好吧,可以说我有一个应用程序,周围有 50-60 个按钮,我想处理其他包中的所有点击方法。我如何处理对包 app.test 的点击;包 app.test.clicks 中的第一类点击次数?
问问题
85 次
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 类的包名导入到 Activity 中。
但是,如果您将其作为每个 Activity 的内部类,那就更好了。
于 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
好吧,我认为实施这不是一个好主意。但是,您需要将Context传递给 clicks 类。从上下文对象中,您将能够访问已单击的控件,并且您可以相应地编写逻辑。
于 2012-12-13T07:08:13.337 回答