Android edittext没有更新

时间:2015-08-11 11:14:29

标签: android android-edittext

我的edittext的方法正常工作,因为我在debbug上检查了它,但在图形布局中根本没有任何变化。

以编程方式更改文本时,在图形布局中不会出现,但如果我在debbug表达式/ watch上尝试myedittext.getText(),则返回正确的字符串,因此settext()方法正常工作但是更改未显示。

以下是代码:

public class easmpartne extends FragmentActivity {

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

        FragmentTabHost tabHost = (FragmentTabHost) findViewById(android.R.id.tabhost);
        tabHost.setup(this,
                getSupportFragmentManager(), android.R.id.tabcontent);
        tabHost.addTab(tabHost.newTabSpec("tab1").setIndicator("General"),
                Tab1.class, null);
        tabHost.addTab(tabHost.newTabSpec("tab2").setIndicator("Categ"),
                Tab2.class, null);

        LayoutInflater inflater = this.getLayoutInflater();

        viewGeneral= inflater.inflate(R.layout.tab1, null);
        viewCateg= inflater.inflate(R.layout.tab2, null);

        txtRef=(EditText)viewGeneral.findViewById(R.id.txtRef);
        txtRef.setText("example");
        txtRef.setEnabled(false);
     }
}

在执行时,settext和setenabled似乎都没有对图形布局产生任何影响。

easmpartne.xml:

<android.support.v4.app.FragmentTabHost
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@android:id/tabhost"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >


    <HorizontalScrollView android:layout_width="fill_parent"
       android:layout_height="wrap_content"
       android:fillViewport="true"
       android:scrollbars="none">

    <TabWidget
        android:id="@android:id/tabs"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_weight="0"
        android:orientation="horizontal" />
    </HorizontalScrollView>

    <FrameLayout
        android:id="@android:id/tabcontent"
        android:layout_width="match_parent"
       android:layout_height="0dp"
       android:layout_weight="1" />

</android.support.v4.app.FragmentTabHost>

tab1.xml:

<ScrollView
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:id="@+id/scrollView2"
    android:layout_marginLeft="5dp"
    android:fillViewport="true"
    android:layout_alignParentBottom="true"
    xmlns:android="http://schemas.android.com/apk/res/android">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/linlayouteasmpartne"
        android:orientation="vertical">

        <TableLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/tablelayout1">

            <TableRow
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:layout_marginTop="5dp">

                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:textAppearance="?android:attr/textAppearanceMedium"
                    android:text="@string/ref"
                    android:id="@+id/textView" />

                <EditText
                    android:layout_width="170dp"
                    android:layout_height="wrap_content"
                    android:id="@+id/txtRef" />
            </TableRow>

....

(我不知道这可能是de tabhost的问题,因为这是我第一次使用它)

在这种情况下,这是获取edittext的正确方法吗?

有哪些可能的问题/解决方案?

感谢。

1 个答案:

答案 0 :(得分:2)

关键是,你看,布局不是一种共享变量,所以当你或运行时读取它时,它会实例化所有内部引用的视图,你必须坚持它。然后,您按照组件的生命周期进行设置,以便在实际完成视图或类似事件时,在onViewStateRestored(Bundle)中设置您希望应该执行的值,或者在onStart左右开始