-1

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

我使用的示例代码:

爪哇代码

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" />

4

5 回答 5

3

实际上,您正在尝试从 Activity 中获取文本EditTextonCreate()它还没有包含任何文本。

所以只要把线 str = edt.getText().toString();放在按钮的 click() 中,你就会得到结果,

喜欢,,

btn.setClickable(true);
btn.setOnClickListener(new OnClickListener() {

    public void onClick(View v) {
        str = edt.getText().toString();
        Log.d("WordWeb","entered - "+str);
        txt.setText("you entered"+str);
    }
});
于 2012-08-20T11:52:32.080 回答
2

您的声明str = edt.getText().toString();应该在onClick处理程序内。

于 2012-08-20T11:54:18.483 回答
2

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

于 2012-08-20T11:59:50.317 回答
0

我认为您正在尝试获取EditText(即 edt)价值,onCreate()并且我认为您是在方法完成后输入价值。所以onCreate()这意味着您没有为您的str.

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

于 2012-08-20T11:54:06.900 回答
0

只需将文本放在您的按钮中,否则它将无法正常工作,因为无论您在字符串中获得什么也可以像您一样工作

于 2018-07-07T03:34:22.343 回答