从 GlSurfaceView 中的布局访问按钮
Access button from Layout within GlSurfaceView
我正在研究 Android 并且一直在研究 OpenGL ES。我有一个xml布局如下(为了只显示相关内容,我把一些东西拿出来了:
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:ads="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/myText"/>
<MyGLSurfaceView
android:id="@+id/mySurface"/>
然后在我的 GlSurfaceView 中,我试图访问相同布局中的按钮。然而,这是我遇到的问题。
我试过以下方法:
View v = (View) getParent();
myTextViewString = (TextView) v.findViewById(R.id.myText);
这个
myTextViewString = (TextView) findViewById(R.id.myText);
还有这个
myTextViewString = (TextView) ((RelativeLayout) getParent()).findViewById(R.id.myText);
我似乎无法弄清楚如何在 GLSurfaceView 之外访问此按钮,但在我的 GLSurfaceView.java.
中位于相同的 activity
我知道这与无法获得父项有关(我假设是因为它没有扩展 Activity)。我环顾四周,找不到实现此目标的方法。
一种简洁明了的方法是将按钮视图传递给 GLSurfaceView
。除了避免在视图层次结构中导航之外,这还使您的视图代码更加通用,因为它不必知道特定按钮的 ID。
在 activity 的 onCreate()
方法中,调用 setContentView()
后,你可以这样:
MyGLSurfaceView glView = (MyGLSurfaceView) findViewById(R.id.mySurface);
TextView textView = (TextView) findViewById(R.id.myText);
glView.setTextView(textView);
在MyGLSurfaceView
中:
private TextView mTextView;
void setTextView(TextView textView) {
mTextView = textView;
}
然后,在 MyGLSurfaceView
的其他方法中,您可以随时使用 mTextView
访问按钮。
我正在研究 Android 并且一直在研究 OpenGL ES。我有一个xml布局如下(为了只显示相关内容,我把一些东西拿出来了:
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:ads="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/myText"/>
<MyGLSurfaceView
android:id="@+id/mySurface"/>
然后在我的 GlSurfaceView 中,我试图访问相同布局中的按钮。然而,这是我遇到的问题。
我试过以下方法:
View v = (View) getParent();
myTextViewString = (TextView) v.findViewById(R.id.myText);
这个
myTextViewString = (TextView) findViewById(R.id.myText);
还有这个
myTextViewString = (TextView) ((RelativeLayout) getParent()).findViewById(R.id.myText);
我似乎无法弄清楚如何在 GLSurfaceView 之外访问此按钮,但在我的 GLSurfaceView.java.
中位于相同的 activity我知道这与无法获得父项有关(我假设是因为它没有扩展 Activity)。我环顾四周,找不到实现此目标的方法。
一种简洁明了的方法是将按钮视图传递给 GLSurfaceView
。除了避免在视图层次结构中导航之外,这还使您的视图代码更加通用,因为它不必知道特定按钮的 ID。
在 activity 的 onCreate()
方法中,调用 setContentView()
后,你可以这样:
MyGLSurfaceView glView = (MyGLSurfaceView) findViewById(R.id.mySurface);
TextView textView = (TextView) findViewById(R.id.myText);
glView.setTextView(textView);
在MyGLSurfaceView
中:
private TextView mTextView;
void setTextView(TextView textView) {
mTextView = textView;
}
然后,在 MyGLSurfaceView
的其他方法中,您可以随时使用 mTextView
访问按钮。