我已经尝试过将EditText值重复转换为字符串,并尝试了我能找到的所有内容,但是我无法从EditText值中正确获取字符串值,然后在对话框中显示它。我做了一个基本的活动来测试它。我哪里错了?所有这个程序都是一个edittext框和一个按钮。
package com.bensherman.example.etts;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.AlertDialog.Builder;
import android.content.DialogInterface;
import android.os.Bundle;
import android.text.Editable;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
public class EditTextToStringActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
EditText text = (EditText)findViewById(R.id.eTb);
String convtext = text.getText().toString();
final Builder vars = new AlertDialog.Builder(this);
vars.setTitle("Saved Information");
vars.setMessage("Entered Text: " + convtext);
Button savedvars = (Button) findViewById(R.id.showButton);
savedvars.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
vars.show();
}
});
}
}
XML:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<EditText
android:id="@+id/eTb"
android:hint = "Enter Text"
android:layout_width="match_parent"
android:layout_height="wrap_content" >
<requestFocus />
</EditText>
<Button
android:id="@+id/showButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Show Text" />
</LinearLayout>
答案 0 :(得分:3)
您在声明/初始化EditText时就会收到文本,这可能是空的时候。
您需要在单击按钮时获取文本 - 我猜想,此时用户将填充一些文本。
这样做:
final EditText text = (EditText)findViewById(R.id.eTb);
final Builder vars = new AlertDialog.Builder(this);
Button savedvars = (Button) findViewById(R.id.showButton);
savedvars.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
String convtext = text.getText().toString();
vars.setTitle("Saved Information");
vars.setMessage("Entered Text: " + convtext);
vars.show();
}
});
答案 1 :(得分:1)
这是代码执行时的问题。您正在创建活动时(在onCreate中)将convtext
变量设置为editText的内容。此时,editText始终为空。
当用户单击该按钮时,您将使用包含convtext(仍为空)的变量显示该对话框。您需要做的是从onClickListener中的editText获取文本:
答案 2 :(得分:0)
将这2行写入onClick()方法
String convtext = text.getText().toString();
vars.setMessage("Entered Text: " + convtext);
或者你也可以这样写
vars.setMessage("Entered Text: " + text.getText().toString());
而不是
vars.show();