处理一个类中的所有单击方法?

时间:2012-12-13 07:03:34

标签: java android onclick onclicklistener

好吧,假设我有一个类似50-60个按钮的应用程序,我想处理其他包内的所有点击方法。我怎么能处理包app.test的点击;包app.test.clicks类中的第一课点击?

3 个答案:

答案 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)

嗯,我认为这不是一个好主意。但是,您需要将上下文传递给点击类。从上下文对象中,您将能够访问已单击的控件,并且可以相应地编写逻辑。