В макете XML присвойте своему SurfaceView имя, добавив атрибут name:
<com.nelsondev.myha3ogl.M3View
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:id="@+id/my_surfaceView1"/>
Далее переопределите onPause и onResume в своей деятельности, найдите представление с помощью findViewById(R.id.my_surfaceView1);
и затем вызовите onPauseи onResume для вашего SurfaceView:
@Override
public void onPause(){
com.nelsondev.myha3ogl.M3View myView = (com.nelsondev.myha3ogl.M3View)findViewById(R.id.my_surfaceView1);
myView.onPause();
super.onPause();
}
Наконец, в вашей реализации представления поверхности переопределите onPause () / onResume () и поместите любой код, который вам нужно сделать, когда ваша деятельность приостановится / возобновится.Не забудьте также вызвать super.onPause () / super.onResume () в представлении поверхности
Редактировать: просто чтобы уточнить, вы можете использовать метод
findViewById()
для любого объекта ViewGroup, чтобы найти дочерние представления внутри этой группы:
MyActivity extends Activity{
public void onCreate(Bundle bundle){
FrameLayout myFrameLayout = (FrameLayout)getLayoutInflater().inflate(R.layout.graphics, null, false);
TextView myView = (TextView)myFrameLayout.findViewById(R.id.textView1);
if(myView!=null){
myView.setText("about to be removed");
myFrameLayout.removeView(myView);
}
setContentView(myFrameLayout);
}
}
Или findViewById()
также является методом в Activity, который найдет любое представление в макете, установленном с помощью setContentView();
MyActivity extends Activity{
public void onCreate(Bundle bundle){
setContentView(R.layout.graphics);
// where the xml file in your question is called graphics.xml
com.nelsondev.myha3ogl.M3View myGLSurfaceView = (com.nelsondev.myha3ogl.M3View)findViewById(R.id.my_surfaceView1);
FrameLayout myFrameLayout = (FrameLayout)findViewById(R.id.framelay);
}
}