Вот псевдокод:
class MoWeFi extends Activity</p>
<pre><code> static TouchSurfaceView TSV;
static DrawRenderer mRenderer;
static UserInterface mUI;
DownloadData mDD = new DownloadData();
static float zoom = 1.f;
mDD.execute();
mUI = new UserInterface();
setContentView(mUI);
</code>
класс UserInterface расширяет LinearLayout
MoWeFi.TSV = новый TouchSurfaceView (контекст);
MoWeFi.mRenderer = новый DrawRenderer (контекст);
MoWeFi.TSV.setRenderer (MoWeFi.mRenderer);
MoWeFi.TSV.setRenderMode (GLSurfaceView.RENDERMODE_WHEN_DIRTY);
this.addView (MoWeFi.TSV);
TextView tv = new TextView(context);
this.addView(tv);
TextView tv2 = new TextView(context);
this.addView(tv2);
класс DownloadData расширяет AsyncTask
protected Void doInBackground () {
делать{
this.publishProgress ();
try {Thread.sleep (1000); catch (InterruptedException e) {}
}во время бега)
}
@Override
protected void onProgressUpdate () {
// ...
MoWeFi.TSV.requestRender ();
MoWeFi.mUI.tv.setText ( "масштабирование =" + MoWeFi.zoom); // ЭТО НЕ РАБОТАЕТ !!! ВСЕГДА ПОЛУЧИТЕ 1.f.
}
класс TouchSurfaceView расширяет GLSurfaceView
gl.glTranslatef (0, 0, -1.f / MoWeFi.zoom); // ЭТО РАБОТАЕТ !!!
класс DrawRenderer реализует GLSurfaceView.Renderer
// Пинч-зум
...
MoWeFi.zoom * = detector.getScaleFactor ();
MoWeFi.zoom = Math.max (0,5f, Math.min (MoWeFi.zoom, 5,0f));
MoWeFi.mUI.tv2.setText("zoom="+MoWeFi.zoom); // IT WORKS !!!
Так что никаких ошибок. Просто не могу получить доступ к моей переменной масштаба везде.
Я новичок в Java, мне, безусловно, не хватает важной концепции.
РЕДАКТИРОВАТЬ добавить float в первых строках
РЕДАКТИРОВАТЬ 2 добавить publishProgress в asyncTask
РЕДАКТИРОВАТЬ 3 logcat ничего не показывает