Java Android:将数据从surfaceView传递到其父活动

Java Android:将数据从surfaceView传递到其父活动,java,android,android-actionbar,surfaceview,Java,Android,Android Actionbar,Surfaceview,我无法将信息从surfaceView类发送到其父类 “覆盖”活动将其视图设置为图形面板: public class Overlay extends Activity{ @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_Overlay);

我无法将信息从surfaceView类发送到其父类

“覆盖”活动将其视图设置为图形面板:

public class Overlay extends Activity{
    @Override
    protected void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
       setContentView(R.layout.activity_Overlay);
       drawingPanel dPanel = new drawingPanel(this);
       setContentView(dPanel);

    }
}
public class drawingPanel extends SurfaceView implements SurfaceHolder.Callback {
    Context context = context;
    public Player(Context context, int num) throws ClassNotFoundException, IOException {
       super(context);
       this.context = context;
       SurfaceHolder holder = getHolder();
       holder.addCallback(this);
    }
    public boolean onTouchEvent(MotionEvent e){
       if(e.getAction()==MotionEvent.ACTION_DOWN){
           //send info to Overlay that drawingPanel was touched
       }
    }
} 
然后在“绘图”面板中:

public class Overlay extends Activity{
    @Override
    protected void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
       setContentView(R.layout.activity_Overlay);
       drawingPanel dPanel = new drawingPanel(this);
       setContentView(dPanel);

    }
}
public class drawingPanel extends SurfaceView implements SurfaceHolder.Callback {
    Context context = context;
    public Player(Context context, int num) throws ClassNotFoundException, IOException {
       super(context);
       this.context = context;
       SurfaceHolder holder = getHolder();
       holder.addCallback(this);
    }
    public boolean onTouchEvent(MotionEvent e){
       if(e.getAction()==MotionEvent.ACTION_DOWN){
           //send info to Overlay that drawingPanel was touched
       }
    }
} 

当触摸surfaceView时,我想将该信息发送到Overlay。我不能简单地在叠加活动中使用onTouchEvent,因为我需要使用drawingPanel绘制内容。我的主要目标是在使用surfaceView时触摸屏幕时隐藏/显示操作栏。如果有其他方法可以实现这一点,请在下面说明。

尝试将这一行添加到您的
Overlay
类的
onCreate
方法中

   dPanel.setActivity(this);
drawingPanel
类中实现
setActivity()
,如下所示:

public void setActivity(Activity overlayActivity) {
    mActivity = overlayActivity;
}
这样,您可以使用
mActivity
引用您的活动,并调用公共方法“隐藏/显示操作栏”,如:

以及


丹妮的代码有效!(对于未来的读者)他的最后两行是伪代码,所以我在onTouchEvent方法中使用的是:if(mActivity.getActionBar().isShowing())mActivity.getActionBar().hide();else mActivity.getActionBar().show();谢谢你的反馈,我已经相应地更新了答案。