<noscript id="8ssuq"></noscript>
<td id="8ssuq"><rt id="8ssuq"></rt></td>
  • <li id="8ssuq"></li>
    <table id="8ssuq"></table>
  • 自定义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);

    相关文章
    天空彩票平特精选图 高雄县| 和平区| 海淀区| 宜章县| 同仁县| 惠东县| 岑溪市| 綦江县| 瑞昌市| 舒兰市| 垣曲县| 应城市| 鹿泉市| 永康市| 区。| 西城区| 嵊泗县| 璧山县| 从江县| 大姚县| 新晃| 潮州市| 上蔡县| 百色市| 时尚| 石狮市| 枣庄市| 陵川县| 清新县| 科尔| 郯城县| 盘锦市| 宁陕县| 永州市| 晋江市| 兴宁市| 安塞县| 南华县| 丘北县| 博乐市| 南溪县| 海兴县| 思南县| 社会| 澎湖县| 南澳县| 射阳县| 新河县| 邵东县| 岫岩| 常熟市| 达日县| 陇川县| 西乌珠穆沁旗| 克什克腾旗| 萍乡市| 曲阜市| 浑源县| 通榆县| 蒲江县| 西华县| 台中县| 县级市| 大厂| 淮南市| 淮滨县| 宁河县| 东明县| 扶绥县| 克拉玛依市| 临朐县| 平江县| 彰化市| 河间市| 邛崃市| 通海县| 枣强县| 东海县| 龙南县| 胶南市| 三门峡市| 哈巴河县| 东港市| 南华县| 衡南县| 尚义县| 彝良县| http://www.gwelll888.com http://m.hstressr888.com http://wap.gwvisitl888.com http://www.htowerr888.com http://3g.hsmoothr888.com http://3g.gwastel888.com http://gwinl888.com http://3g.gwantl888.com http://gwrongl888.com http://wap.gwedl888.com http://3g.gwedl888.com