【发布时间】:2017-04-07 04:50:22
【问题描述】:
假设我有这个界面:
public interface IBox
{
public void onEvent(int eventType, View control, Object data);
}
我有一个班级可以访问它:
public class Rectangle
{
private IBox onEvent;
public Rectangle(Context context, View rowRoot) {
super(context);
onEvent = (Rectangle) context;
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.buttonClick:
// send data : data1 and data2;
onEvent.onEvent(data1,null, data2);
break;
}
我有一个类实现IBox:
public abstract class BaseActivity implements IBox
{
@Override
public void onEvent(int data1, View data, Object data2)
{
//do something here
}
}
而且我有类扩展 BaseActivity 类:
public class HomeBaseActivity extends BaseActivity
{
// transit Activity here, or send intent....
}
最后我有类 main 扩展 HomeBaseActivity:
public class HomeActivity extends HomeBaseActivity
{
@Override
public void onEvent(int data1, View data, Object data2)
{
switch (data1) {
//reciver data1 from class Rectangle
}
}
我的问题:
1、为什么data1可以在HomeActivity类中接收?
2,哪位大神能解释一下,帮帮我?
// 一个有垃圾英语,所以谢谢
【问题讨论】:
-
您发布的代码将不起作用,因为类
Rectangle中的变量onEvent从未初始化。它可以工作在你的真实代码中的某个地方,将HomeActivity类的对象分配给Rectangle类中的变量onEvent。 -
抱歉,您的问题不清楚; 为什么 data1 可以接收 ...你是什么意思?
-
@Timothy Truckle:对不起,我在构造函数中初始化了,但没有必要,所以我不发帖,我编辑了
-
@GhostCat :意思是:在 HomeActivity 类中,reciver data1 成功,如何发送?我不明白。
-
@manhthang 你不能这样做:
onEvent = (Rectangle) context;。Rectangle与IBox或Context没有任何关系。
标签: java android interface abstract-class