无法从edittext获取文本?

时间:2012-08-20 11:49:05

标签: android android-edittext

我已更新到ADT版本20.之后我无法使用EditText。对于API级别16,它显示一些错误。对于较低的API级别,没有错误,但我无法获得EditText的输入。它显示一个空的结果。

我使用的示例代码:

java代码

public class sample extends Activity {
EditText edt;
Button btn;
TextView txt;
String str;
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    edt = (EditText) findViewById(R.id.editText1);
    btn = (Button) findViewById(R.id.button1);
    txt = (TextView) findViewById(R.id.textView2);
    str = edt.getText().toString();
    btn.setClickable(true);
    btn.setOnClickListener(new OnClickListener() {

        public void onClick(View v) {
            Log.d("WordWeb","entered - "+str);
            txt.setText("you entered"+str);
        }
    });
}
}

XML编码

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/LinearLayout1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<TextView
    android:id="@+id/textView1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/Search"
    android:textAppearance="?android:attr/textAppearanceLarge" />

<EditText
    android:id="@+id/editText1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:ems="10" />



<Button
    android:id="@+id/button1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center"
    android:layout_margin="10pt"
    android:text="Button" />


<TextView
    android:id="@+id/textView2"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center"
    android:text="Large Text"
    android:textAppearance="?android:attr/textAppearanceLarge" />

5 个答案:

答案 0 :(得分:2)

实际上,您正试图从EditText的{​​{1}}中获取文字,其中没有任何文字包含。

所以只需将行onCreate()放在按钮的click()中,然后就会得到结果,

像,,

str = edt.getText().toString();

答案 1 :(得分:1)

您的陈述str = edt.getText().toString();应位于onClick处理程序内。

答案 2 :(得分:1)

代码无法访问该值,因为在onCreate结束后,EditText abd str中找到的值超出了范围。因此,将str = edt.getText().toString();语句放在onClick中,这样当用户单击该按钮时,它就可以访问该值。

答案 3 :(得分:0)

我认为您正试图在EditText中获得onCreate()(即edt)值,并且我认为您在完成onCreate()方法后输入了值。所以这意味着您不是获得str的价值。

这就是为什么您无法将值设置为TextView

答案 4 :(得分:0)

只需将文本放在按钮内,否则无论您在字符串中得到什么,它都无法正常工作