<var id="z5l9h"><strike id="z5l9h"><progress id="z5l9h"></progress></strike></var>
<thead id="z5l9h"></thead>
<cite id="z5l9h"><strike id="z5l9h"><listing id="z5l9h"></listing></strike></cite>
<var id="z5l9h"></var>
<ins id="z5l9h"><strike id="z5l9h"></strike></ins> <var id="z5l9h"></var>
<var id="z5l9h"><dl id="z5l9h"></dl></var>
<var id="z5l9h"><strike id="z5l9h"><progress id="z5l9h"></progress></strike></var>

自定义SurfaceView和默认android视图之间的通信

我的问题是自定义GameView(扩展SurfaceView)和TextView之间的通信:我想从GameView内部设置TextView的文本.
在主要活动我正在使用这个布局文件,它应该解释我的应用程序的结构:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<RelativeLayout
    android:layout_width="fill_parent"
    android:layout_height="wrap_content" 
    android:background="#00ff00"
    >
    <TextView
        android:id="@+id/scoreTV"
        android:layout_alignParentLeft="true"
        android:layout_centerVertical="true"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="score: 0" 
        />
    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="back"
        android:layout_alignParentRight="true" />                   
</RelativeLayout>
<org.gk.grApp.GameView
    android:id="@+id/gameplayScreen"
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent"
    />
</LinearLayout>

我无法在GameView对象中更改TextView的文本,因为无法从另一个接触UI线程.
处理程序也不起作用,因为我无法给出处理程序对GameView的构造函数的引用,这是在加载此xml文件之后执行的(读取xml文件的默认构造函数,例如此处为How can I use GLSurfaceView in a LinearLayout together with other Views, such as TextView or Button?).
你知道我现在应该做什么吗?也许我的演绎错了,所以请告诉我这个.

编辑:我改变了我的xml文件,而不是我现在拥有的GameView:

<LinearLayout
    android:id="@+id/gameplayScreen"
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent"
    >
    </LinearLayout>

我还在构造函数的签名中添加了一个参数(第三个):

public GameView(Context context, AttributeSet as, Handler h) { ... }

并在GameplayActivity中更改了我的onCreate:

protected void onCreate(Bundle savedInstanceState) {        
    super.onCreate(savedInstanceState);
    setContentView(R.layout.gameplay);

    LinearLayout ll = (LinearLayout)findViewById(R.id.gameplayScreen);
    GV = new GameView(this, null, scoreHandler);
    ll.addView(GV);         
}

它工作正常,现在我可以设置TextView的文本但是在单击后退按钮后会抛出另一个异常:
“执行暂停未恢复的活动:{org.gk.grApp / org.gk.grApp.MainMenuActivity}”.我刚刚开始搜索有关此信息.

首先在活动级别上引用TextView:

TextView txv;

在onCreate中分配此引用:

txv = (TextView) findViewById(R.id.MyTextView);

然后在onCreate之后在Activity中创建一个方法,如下所示:

public void setTextView(final String txt){
    MyActivity.this.runOnUiThread(new Runnable() {     
        public void run() {         
            txv.setText(txt);     
        } 
     });
}

然后,您可以从自定义视图中拨打电话:

((MyActivity) getContext()).setTextView(str);

相关文章
761111香港马会查询无错九肖 资源县| 南充市| 望谟县| 黄山市| 沿河| 大石桥市| 龙泉市| 新丰县| 康定县| 肃北| 祁连县| 泰宁县| 峨山| 思南县| 广元市| 潢川县| 通榆县| 田阳县| 泽库县| 石台县| 潮州市| 稷山县| 嘉鱼县| 交城县| 萝北县| 柏乡县| 宝应县| 阜城县| 韶山市| 汪清县| 沙河市| 虎林市| 维西| 民权县| 班戈县| 宁波市| 蓬安县| 长宁区| 潼南县| 盐津县| 苏尼特左旗| 黔南| 新源县| 敦化市| 轮台县| 古浪县| 浑源县| 宜兴市| 乐安县| 阿巴嘎旗| 将乐县| 黄浦区| 金沙县| 林口县| 鸡西市| 天峨县| 广昌县| 丹凤县| 扎鲁特旗| 樟树市| 宜兴市| 高平市| 和林格尔县| 丹江口市| 滨州市| 广东省| 韶山市| 女性| 阜新| 萨迦县| 瑞安市| 上杭县| 德格县| 繁昌县| 金寨县| 永寿县| 浏阳市| 彩票| 平泉县| 黎城县| 建湖县| 宁河县| 通江县| 北安市| 静宁县| 天水市| 哈密市| http://m.hstickr888.com http://hspiritr888.com http://m.flshopo888.com http://www.flsloto888.com http://3g.flsito888.com http://www.gweightl888.com http://m.htowerr888.com http://wap.gweekendl888.com http://wap.hwaitr888.com http://www.flsecureo888.com http://wap.hwarr888.com