Java Android EditText内容为空,即使在显示文本时也是如此

Java Android EditText内容为空,即使在显示文本时也是如此,java,android,onclick,android-edittext,Java,Android,Onclick,Android Edittext,我有一个表示ID号的EditText字段。该字段可以根据刷卡结果使用IDField.setText(字符串)以编程方式填充,也可以使用键盘手动填充 填充文本后,这两种方法(基于滑动的自动登录或基于按钮单击的手动登录)都运行相同的登录脚本。但是,当我获取EditText字段的内容时,如果手动编辑文本,则返回一个空字符串。如果文本是以编程方式设置的,那么它可以完美地工作 这对我来说毫无意义。editText.getText().toString()不返回文本框中可见内容的原因是什么 XML: 刷卡:

我有一个表示ID号的EditText字段。该字段可以根据刷卡结果使用IDField.setText(字符串)以编程方式填充,也可以使用键盘手动填充

填充文本后,这两种方法(基于滑动的自动登录或基于按钮单击的手动登录)都运行相同的登录脚本。但是,当我获取EditText字段的内容时,如果手动编辑文本,则返回一个空字符串。如果文本是以编程方式设置的,那么它可以完美地工作

这对我来说毫无意义。editText.getText().toString()不返回文本框中可见内容的原因是什么

XML:

刷卡:

// displays data from card swiping
private Runnable doUpdateTVS = new Runnable()
{
    public void run()
    {
        try
        {
            //Grab ID Number
            String[] splitMSG = strMsrData.split("=");
            //txtIDNumber.setText(splitMSG[2]);
            IDField.setText(splitMSG[2]);
            StringBuffer hexString = new StringBuffer();
            hexString.append("<");
            String fix = null;
            for (int i = 0; i < msrData.length; i++) {
                fix = Integer.toHexString(0xFF & msrData[i]);
                if(fix.length()==1)
                    fix = "0"+fix;
                hexString.append(fix);
                if((i+1)%4==0&&i!=(msrData.length-1))
                    hexString.append(' ');
            }
            hexString.append(">");
            myUniMagReader.WriteLogIntoFile(hexString.toString());

            SignInStudent();
        }
        catch(Exception ex)
        {
            ex.printStackTrace();
        }
    }
};

布局仅在循环的onCreate阶段更新。当调用onResume事件时也会触发此操作,这解释了锁定和解锁设备后字段更新的原因。有一些解决方法,例如进行更多的后台处理,然后创建具有正确值的新视图,或者使用surfaceView,允许在程序处于正常执行周期时进行绘图


对于我的应用程序,我要么进行后台处理,然后移动到一个新的视图,要么有一个视图不断地调用自己,以再次触发onCreate事件。解决方案取决于应用程序,但这就是问题出现的原因。

请用您的代码编辑此问题?当然,你的代码中有一些错误。也可以发布你的布局xml。这可能是因为你的文本还没有经过验证。当你点击按钮时,它是否仍然有下划线?请发布你的代码。我已经发布了代码。
IDField = (EditText) layout.findViewById (R.id.signInID);
LoginButton = (Button) findViewById(R.id.button1);
LoginButton.setOnClickListener(new OnClickListener() { public void onClick(View v) { SignInStudent(); } } );
// displays data from card swiping
private Runnable doUpdateTVS = new Runnable()
{
    public void run()
    {
        try
        {
            //Grab ID Number
            String[] splitMSG = strMsrData.split("=");
            //txtIDNumber.setText(splitMSG[2]);
            IDField.setText(splitMSG[2]);
            StringBuffer hexString = new StringBuffer();
            hexString.append("<");
            String fix = null;
            for (int i = 0; i < msrData.length; i++) {
                fix = Integer.toHexString(0xFF & msrData[i]);
                if(fix.length()==1)
                    fix = "0"+fix;
                hexString.append(fix);
                if((i+1)%4==0&&i!=(msrData.length-1))
                    hexString.append(' ');
            }
            hexString.append(">");
            myUniMagReader.WriteLogIntoFile(hexString.toString());

            SignInStudent();
        }
        catch(Exception ex)
        {
            ex.printStackTrace();
        }
    }
};
public void SignInStudent()
{
    String temp = "http://wwww.tempUrl.com/signIn?ID="+ IDField.getText().toString() + "&DeviceId="+KEY;
    webView.loadUrl(temp);
}