2013-03-01 73 views
0

我正在开发Android中的应用程序。我有一个叫做AugmentedView的类,扩展了,它负责绘制标记。在onDraw方法中,当它检测到冲突时,我想通知父类,它是主类,并且包含主GUI以在屏幕中启用一个按钮。我调用主类的OnCreate的AugmentedView类用下面的代码:
Java对象通知父类

AugmentedView augmentedView = new AugmentedView(this); 
    augmentedView.setOnTouchListener(this); 
    augmentedView.setLayoutParams(new LayoutParams(
      LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT)); 
    liveLayout.addView(augmentedView); 

我怎么能通知主类的变化,并通过标记它的名单?

+0

super.yourMethod(参数...)? – CsBalazsHungary 2013-03-01 14:33:50

+0

你认为你的'draw()'方法是否适合碰撞检测?我宁愿把它放到更新状态的'update()'方法中。 – gaborsch 2013-03-01 14:38:06

+0

对不起CsBalazsHungary你能更具体吗? – user2065529 2013-03-01 14:43:26

回答

0

如果我理解你的问题正确,要通知活动/片段包含您AugmentedView

一个简单的方法是使用java回调函数。

//在活动

//onCreate() .. 

AugmentedView augmentedView = new AugmentedView(this); 
augmentedView.setOnTouchListener(this); 
augmentedView.setCollisionlistener(new Collisionlistener()); 
augmentedView.setLayoutParams(new LayoutParams(
     LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT)); 
liveLayout.addView(augmentedView); 

} 
.. 
public class Collisionlistener { 
    public void onCollosion(){ 
    // write code to handle collosion 
    } 

} 


    // in your AugmentedView 

    private Collisionlistener mListener; 

    public void setCollisionlistener(Collisionlistener listener){ 
     mListener = listener; 
    } 

    public void onDraw(Canvas canvas){ 
    // your code 
    if (collosionDetected && mListener != null) { 
     mListener.onCollosion(); 
    } 

    } 
+0

谢谢,也许你的解决方案就是我一直在寻找的。据我所知,这与线程处理等待和通知的方式类似。我是对的吗?我会测试这个,我会接受你的答案。 – user2065529 2013-03-01 14:48:40