EditText到String返回没有值

时间:2011-11-29 14:34:09

标签: android android-layout

我已经尝试过将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>

3 个答案:

答案 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();