我在Android应用程序中有一个活动,它应该连接到一个servlet。我有两个EditText字段,并通过editText_name.getText()。toString方法获取两个输入。但是应用程序无法捕获输入和将它打印在Log.My代码片段中如下
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字段保持为null,即使我提供了一些输入。
有人可以对这个问题有所了解吗?我是否必须更改AndroidManifest.xml文件中的任何内容???
任何帮助将不胜感激。
答案 0 :(得分:1)
您正在onCreate()
中提取数据。
在按钮的onClick事件中移动这些行。
PatientIdInput=PatientIdInputField.getText().toString();
CenterIdInput=CenterIdInputField.getText().toString();
希望你了解其中的差异。
答案 1 :(得分:1)
移动你
PatientIdInput=PatientIdInputField.getText().toString();
CenterIdInput=CenterIdInputField.getText().toString();
调用按钮的onClick侦听器。
答案 2 :(得分:0)
您正在尝试在onCreate中获取数据,但它会在启动时清空。您应该尝试从onClick上的EditText读取数据。 将此代码移动到您的点击处理程序中:
PatientIdInput=PatientIdInputField.getText().toString();
CenterIdInput=CenterIdInputField.getText().toString();
Log.e("PatientIdInput is",PatientIdInput);
Log.e("CenterIdInput is",CenterIdInput);
答案 3 :(得分:0)
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()
答案 4 :(得分:0)
如果您在按钮上单击,则需要编辑文本数据。
而不是在按钮的点击监听器中放置从编辑文本中获取数据的代码。
因为你的代码已经执行但是,那时它没有值所以你没有得到任何东西。
所以,当您在代码的位置需要edit-text 的值时,您将编辑文本值放入代码。
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);
}
});
从 onCreate() 删除 编辑文本值获取代码。