2016-05-15 2 views
0

私はAndroidで作業しており、OpenGL ESで作業しています。 (私は唯一の相対コンテンツを表示するには、いくつかの物事を取っている次のように私は、XMLのレイアウトを持っています。GlSurfaceView内のレイアウトからのアクセスボタン

<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内部同じ活動であることはできません。

私はそれが親を得ることができないことと関係があることを知っています(私はそれがアクティビティを拡張しないので仮定しています)。私は周りを見て、私はこれを達成する方法を見つけることができません。

ご協力いただきまして誠にありがとうございます。ありがとう、

+0

アクティビティから 'GLSurfaceView'に' Context'またはボタンだけを渡すのはなぜですか?次に、フープをジャンプしてビューにアクセスする必要はありません。 –

+0

あなたはそれを渡す方法とiを使ってIDを取得する方法についての回答を提出できますか?だから私はそれを正しくマークすることができた。それは私が考えなかった興味深い考えです – L1ghtk3ira

答えて

1

これを行うには、ボタンビューをGLSurfaceViewに渡すのが一番簡単です。ビュー階層のナビゲーションを避けるだけでなく、特定のボタンのIDを知る必要がないため、ビューコードをより汎用的にすることもできます。 MyGLSurfaceView

MyGLSurfaceView glView = (MyGLSurfaceView) findViewById(R.id.mySurface); 
TextView textView = (TextView) findViewById(R.id.myText); 
glView.setTextView(textView); 

:活動のonCreate()方法で

は、setContentView()を呼び出した後、あなたはこの可能性があり

private TextView mTextView; 

void setTextView(TextView textView) { 
    mTextView = textView; 
} 

その後、MyGLSurfaceViewの他の方法では、あなたが使用することができますがmTextViewいつでもボタンにアクセスする必要があります。

+0

素晴らしい作品、私は私はUIのオブジェクトの参照を渡すことができたかわからなかった。ありがとう! – L1ghtk3ira

関連する問題