Java Edittext内容显示为零

Java Edittext内容显示为零,java,android,Java,Android,我正在制作一个应用程序,需要从用户那里获取输入,并将该输入附加到字符串中,并将其用作数据解析的url 但编辑文本内容为空,即使我在编辑文本中输入文本 我将edittext内容转换为字符串,如下所示 EditText edit = (EditText)findViewById(R.Id.tv5); 在你的内心深处 String data = edit.getText().toString(); 谁能告诉我为什么data.length()给了我零? 我完整的主要活动如下: public clas

我正在制作一个应用程序,需要从用户那里获取输入,并将该输入附加到字符串中,并将其用作数据解析的url 但编辑文本内容为空,即使我在编辑文本中输入文本 我将edittext内容转换为字符串,如下所示

EditText edit = (EditText)findViewById(R.Id.tv5);
在你的内心深处

String data = edit.getText().toString();
谁能告诉我为什么
data.length()
给了我零? 我完整的主要活动如下:

public class Pnr extends Activity {
EditText edit;
TextView text1;
Button button;
String pnr, check;
HttpClient client;
JSONObject json;
int s;
String URL = "pnrbuddy.com/pnrstatus=";

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setContentView(R.layout.activity_pnr);
    edit = (EditText) findViewById(R.id.tv5);
    text1 = (TextView) findViewById(R.id.textView2);
    button = (Button) findViewById(R.id.button1);
    client = new DefaultHttpClient();
    pnr = String.valueOf(edit.getText());
    s = pnr.length();

    button.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            new Read().execute("trainNo");

        }
    });
}

public JSONObject pnrStatus(String key) throws ClientProtocolException,
        IOException, JSONException {
    StringBuilder url = new StringBuilder(URL);
    url.append(key);
    HttpGet get = new HttpGet(url.toString());
    HttpResponse r = client.execute(get);
    int status = r.getStatusLine().getStatusCode();
    JSONObject last = new JSONObject();
    if (status == 200) {
        HttpEntity e = r.getEntity();
        String data = EntityUtils.toString(e);
        last = new JSONObject(data);
        return last;
    } else {
        return last;
    }
}

public class Read extends AsyncTask<String, Integer, String> {

    @Override
    protected String doInBackground(String... arg0) {
        // TODO Auto-generated method stub
        try {
            json = pnrStatus(pnr);
            return json.getString(arg0[0]);
        } catch (ClientProtocolException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
            return null;
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
            return null;
        } catch (JSONException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
            return s + "";
        }
    }

    @Override
    protected void onPostExecute(String result) {
        // TODO Auto-generated method stub
        text1.setText("               " + result);

    }

}
公共类Pnr扩展活动{
编辑文本编辑;
TextView text1;
按钮;
字符串pnr,检查;
HttpClient;
JSONObject json;
int-s;
字符串URL=“pnrbuddy.com/pnrstatus=”;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_pnr);
edit=(EditText)findViewById(R.id.tv5);
text1=(TextView)findViewById(R.id.textView2);
按钮=(按钮)findViewById(R.id.button1);
client=新的DefaultHttpClient();
pnr=String.valueOf(edit.getText());
s=pnr.length();
setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
//TODO自动生成的方法存根
新读取()。执行(“列车号”);
}
});
}
公共JSONObject pnrStatus(字符串键)抛出ClientProtocolException,
IOException,jsoneexception{
StringBuilder url=新的StringBuilder(url);
url.append(key);
HttpGet=newhttpget(url.toString());
HttpResponse r=client.execute(get);
int status=r.getStatusLine().getStatusCode();
JSONObject last=新的JSONObject();
如果(状态==200){
HttpEntity e=r.getEntity();
字符串数据=EntityUtils.toString(e);
last=新的JSONObject(数据);
最后返回;
}否则{
最后返回;
}
}
公共类读取扩展异步任务{
@凌驾
受保护的字符串doInBackground(字符串…arg0){
//TODO自动生成的方法存根
试一试{
json=pnrStatus(pnr);
返回json.getString(arg0[0]);
}捕获(客户端协议例外e){
//TODO自动生成的捕捉块
e、 printStackTrace();
返回null;
}捕获(IOE异常){
//TODO自动生成的捕捉块
e、 printStackTrace();
返回null;
}捕获(JSONException e){
//TODO自动生成的捕捉块
e、 printStackTrace();
返回s+“”;
}
}
@凌驾
受保护的void onPostExecute(字符串结果){
//TODO自动生成的方法存根
text1.setText(“+结果);
}
}
} 当我在字符串URL中输入字符串而不是从edittext接受现有字符串时,代码会起作用 URL=“pnrbuddy/pnrstatus=myText”; 为什么我无法从editText中获取字符串?

试试这个

EditText edit = (EditText)findViewById(R.id.tv5);
String data = edit.getText().toString();

如果您试图在
EditText
中的
onclicklistener
中获取长度,它将仅给出u
0
。在这种情况下,请尝试从
onTextChange
获取长度

Replace your on create method by this n try

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_pnr);
        edit = (EditText) findViewById(R.id.tv5);
        text1 = (TextView) findViewById(R.id.textView2);
        button = (Button) findViewById(R.id.button1);
        client = new DefaultHttpClient();


        button.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                pnr =edit.getText().toString();
                s = pnr.length();
                new Read().execute("trainNo");

            }
        });
    }

实际上,在创建活动时而不是单击按钮时获取文本,因此将gettext代码放在onclick方法中可以解决您的问题

您确定使用了正确的id-tv5吗?忘记我的评论吧。。这仅在TextView中可用class@user3363800显示您的按钮单击侦听器代码发布您的完整活动类代码。您可以向我们显示更多代码和布局xml文件吗?