Android:OnClickListener OnClick事件在不同的类中

时间:2014-01-28 07:35:53

标签: android onclick onclicklistener

我想在另一个可以由2个不同类(活动A和活动B)使用的类中设置OnClick事件

示例:

活动A

public class A extends Activity {

    String sample = "Sample text";

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        TextView textview = (TextView) findViewById (R.id.textview);
        findViewById(R.id.btn_sampleA).setOnClickListener(new C());

    }
}

活动B

public class B extends Activity {

    String sample = "Sample text";

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main2);

        TextView textview = (TextView) findViewById (R.id.textview);
        findViewById(R.id.btn_sampleB).setOnClickListener(new C());

    }
}

放置onClick事件的活动C

public class C implements OnClickListener {

    @Override
    public void onClick(View v) {
        switch(v.getId()) {
        case R.id.btn_sampleA:
            textview.setText(sample);
            break;
        case R.id.btn_sampleB:
            textview.setText(sample);
            break;
    }
}

自己尝试但没有工作,可能这样做吗?或者还有另一种方法可供使用?

1 个答案:

答案 0 :(得分:3)

更改类C的构造函数以将TextView作为参数:

public class C implements OnClickListener {
TextView mTextView;    

public C (TextView text){
    mTextView = text;
}

@Override
public void onClick(View v) {
    switch(v.getId()) {
    case R.id.btn_sampleA:
        mTextView.setText(sample);
        break;
    case R.id.btn_sampleB:
        mTextView.setText(sample);
        break;
}
}

然后像这样调用实例化C:

findViewById(R.id.btn_sampleA).setOnClickListener(new C(textView));