Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/233.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android EditText字段不起作用_Android_Android Edittext - Fatal编程技术网

Android EditText字段不起作用

Android EditText字段不起作用,android,android-edittext,Android,Android Edittext,我在一个android应用程序中有一个活动,它应该连接到一个servlet。我有两个EditText字段,并通过EditText_name.getText().toString方法获取两个输入。但是该应用程序无法捕获输入并将其打印到日志中。我的代码片段如下所示 public class ServletActivity extends Activity { Button button; TextView outputText; //public String URL = "htt

我在一个android应用程序中有一个活动,它应该连接到一个servlet。我有两个EditText字段,并通过EditText_name.getText().toString方法获取两个输入。但是该应用程序无法捕获输入并将其打印到日志中。我的代码片段如下所示

    public class ServletActivity extends Activity {

Button button;
    TextView outputText;
//public String URL = "http://10.0.2.2:8080/MyHL7Server /getPatientDetails?patientID";
public String PatientDataURL = "http://192.168.161.129:8080/MyHL7Server/getPatientDetails?patientID";
public String SensorListURL="http://192.168.161.129:8080/MyHL7Server/getSensorDetails?CenterID";

public String PatientInfo=new String();
 public String SensorList=new String();

public String PatientIdInput=new String();
 public String CenterIdInput=new String();
 private ProgressDialog progressMessage;
 int patientDataFlag,sensorDataFlag=0;

 EditText PatientIdInputField;
 EditText CenterIdInputField;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_servlet);

     //final  Button ConnectServerButton=(Button)findViewById(R.id.button2);

        button = (Button) findViewById(R.id.button);
        outputText = (TextView) findViewById(R.id.textView3);
        PatientIdInputField=(EditText)findViewById(R.id.editText1);
        CenterIdInputField=(EditText)findViewById(R.id.editText2);
        PatientIdInput=PatientIdInputField.getText().toString();
        CenterIdInput=CenterIdInputField.getText().toString();
        Log.e("PatientIdInput is",PatientIdInput);
        Log.e("CenterIdInput is",CenterIdInput);
    System.out.println("Inside Servlet Activity");
    Log.e("Testing","Servlet Activity");




    ;
    button.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub

                Log.e("Patient Id Input",PatientIdInput);
                Log.e("CenterId Input",CenterIdInput);
                PatientDataURL.concat("=").concat(PatientIdInput);

                Log.e("Debug PatientDataURL created",PatientDataURL);
                Log.e("Debug","Calling GetPatientDataTask");

                GetPatientDataTask patientTask = new GetPatientDataTask();
                patientTask.execute(new String[] { PatientDataURL });
                Log.e("PatientData",PatientInfo);
                Toast.makeText(getApplicationContext(),
                        "Patient data is : "+PatientInfo, Toast.LENGTH_LONG).show();    
                System.out.println("Patient Data Obtained "+PatientInfo);




        }
    });
}
该应用程序能够通过AsyncTask连接到servlet,但我担心的是,即使我给出了一些输入,userinput字段仍然保持为空

有人能解释一下这个问题吗?我是否必须更改AndroidManifest.xml文件中的任何内容


任何帮助都将不胜感激。

您正在
onCreate()
中获取数据

在按钮的onClick事件中移动这些行

PatientIdInput=PatientIdInputField.getText().toString();
CenterIdInput=CenterIdInputField.getText().toString();

希望您能理解其中的区别。

您试图在onCreate中获取数据,但在启动时它将为空。您应该在单击时尝试从EditText读取数据。 将此代码移到单击处理程序中:

PatientIdInput=PatientIdInputField.getText().toString();
CenterIdInput=CenterIdInputField.getText().toString();
Log.e("PatientIdInput is",PatientIdInput);
Log.e("CenterIdInput is",CenterIdInput);
感动你

PatientIdInput=PatientIdInputField.getText().toString();
    CenterIdInput=CenterIdInputField.getText().toString();
调用按钮的onClick侦听器

    PatientIdInputField=(EditText)findViewById(R.id.editText1);
    CenterIdInputField=(EditText)findViewById(R.id.editText2);
    PatientIdInput=PatientIdInputField.getText().toString();
    CenterIdInput=CenterIdInputField.getText().toString();
将代码移到:

button.setOnClickListener(new View.OnClickListener()

如果单击按钮时需要编辑文本数据

然后将用于从编辑文本中获取数据的代码放入按钮的单击侦听器中

因为你的代码是被执行的,但在那个时候它没有任何价值,所以你什么也得不到

所以,当您需要在代码的那个位置编辑文本的值时,您可以将编辑文本的值放入代码中


删除编辑文本值从onCreate()获取代码

你确定edittext
editText1
存在于布局
activity\u servlet
中吗?谢谢你的回答…我被困在了这个相当愚蠢的点上。谢谢你的回答…我被困在了这个相当愚蠢的点上。
  button.setOnClickListener(new View.OnClickListener() {

    @Override
    public void onClick(View v) {
        // TODO Auto-generated method stub

            /* code executed when you click on button */

            PatientIdInput=PatientIdInputField.getText().toString();
            CenterIdInput=CenterIdInputField.getText().toString();

            Log.e("Patient Id Input",PatientIdInput);
            Log.e("CenterId Input",CenterIdInput);
            PatientDataURL.concat("=").concat(PatientIdInput);

            Log.e("Debug PatientDataURL created",PatientDataURL);
            Log.e("Debug","Calling GetPatientDataTask");

            GetPatientDataTask patientTask = new GetPatientDataTask();
            patientTask.execute(new String[] { PatientDataURL });
            Log.e("PatientData",PatientInfo);
            Toast.makeText(getApplicationContext(),
                    "Patient data is : "+PatientInfo, Toast.LENGTH_LONG).show();    
            System.out.println("Patient Data Obtained "+PatientInfo);
    }
});