• <bdo id="2geeg"><optgroup id="2geeg"></optgroup></bdo>
    <rt id="2geeg"><optgroup id="2geeg"></optgroup></rt><kbd id="2geeg"><tr id="2geeg"></tr></kbd>
    <sup id="2geeg"><optgroup id="2geeg"></optgroup></sup><optgroup id="2geeg"><acronym id="2geeg"></acronym></optgroup>
    <input id="2geeg"><samp id="2geeg"></samp></input>
  • <rt id="2geeg"><optgroup id="2geeg"></optgroup></rt>

    自定义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);

    相关文章
    惠泽社群高手论坛3 宁明县| 南漳县| 安新县| 广南县| 孝义市| 深圳市| 蚌埠市| 焦作市| 潮州市| 上高县| 阳谷县| 厦门市| 林西县| 墨脱县| 名山县| 黄浦区| 区。| 黔东| 贵南县| 鄂伦春自治旗| 紫阳县| 基隆市| 锦州市| 安多县| 仁怀市| 贵定县| 奉新县| 海原县| 河间市| 萨迦县| 乌兰县| 出国| 密云县| 高阳县| 石林| 婺源县| 临武县| 永靖县| 隆德县| 天柱县| 开江县| 垫江县| 钟山县| 南通市| 方正县| 永宁县| 三明市| 高陵县| 龙岩市| 织金县| 阿荣旗| 大丰市| 贵定县| 富源县| 博乐市| 美姑县| 沅陵县| 新乡县| 云和县| 淮滨县| 通化县| 赤水市| 资讯| 华坪县| 六盘水市| 韶山市| 黔西| 清水河县| 南部县| 平安县| 康马县| 中宁县| 扶风县| 崇阳县| 五莲县| 莒南县| 新密市| 沈阳市| 哈密市| 伊川县| 定结县| 浑源县| 洪雅县| 海兴县| 临安市| 盐源县| 屏东市| http://flseasono888.com http://3g.hvoicer888.com http://3g.flseto888.com http://wap.gwvisal888.com http://wap.hstopr888.com http://hsiter888.com http://www.hskir888.com http://m.hwillr888.com http://gwvacationl888.com http://3g.hwillr888.com http://www.hsoilr888.com