所以让我说我有这个界面:
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类中恢复? 有人能解释,帮我吗? // a英语很差,所以谢谢
发布于 2016-11-25 07:49:36
我理解您想知道为什么在onClick() in Rectangle中,我们可以在HomeActivity中将值传递给onEvent(),并假设您的活动是在扩展Context (每个活动都必须扩展Context)。
让我看看这里。HomeActivity正在扩展正在实现IBox的HomeBaseActivity。基本上,可以将new HomeActivity()转换为IBox的对象。1
此外,正如我上面所假设的,您的活动正在扩展Context。2
1 => HomeActivity的一个实例可以转换为IBox和Context。
让我们将HomeActivity的一个对象传递给您的Rectangle (正在转换为Context)并分配给onEvent属性(现在正在转换为IBox)。
现在在您的onClick()中,onEvent.onEvent(data1,null, data2);只是简单地调用了您在HomeActivity中实现的onEvent()方法。这就是为什么可以将data1传递给HomeActivity的原因。
学习有关Java这里中的接口和继承的更多信息。
P/s:如果你在阅读英语方面遇到困难,那就问一问,这次我可以私下用你的母语向你解释。试着提高你的英语水平,至少让每个人都能理解你。因为我们在这里用英语讨论。
https://stackoverflow.com/questions/40760042
复制相似问题