Java Android:将数据从surfaceView传递到其父活动
我无法将信息从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);
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();谢谢你的反馈,我已经相应地更新了答案。