我想在另一个可以由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;
}
}
自己尝试但没有工作,可能这样做吗?或者还有另一种方法可供使用?
答案 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));