1

サーブレットに接続することになっているAndroidアプリに単一のアクティビティがあります.2つのEditTextフィールドを作成し、editText_name.getText().toStringメソッドを介して2つの入力を取得します.しかし、アプリは入力をキャッチして出力することができません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 を介してサーブレットに接続できますが、入力を行っても userinput フィールドが null のままであることに懸念があります。

誰でもこの問題に光を当てることができますか? AndroidManifest.xml ファイルで何か変更する必要がありますか?

どんな助けでも大歓迎です。

4

5 に答える 5

1

あなたを動かす

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

ボタンの onClick リスナーを呼び出します。

于 2013-06-28T07:13:23.400 に答える
1

でデータを取得していますonCreate()

これらの行をボタンの onClick イベントに移動します。

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

違いを理解していただければ幸いです。

于 2013-06-28T07:13:01.833 に答える
0

onCreate でデータを取得しようとしていますが、開始時に空になります。onClick で EditText からデータを読み取ろうとする必要があります。このコードをクリック ハンドラに移動します。

PatientIdInput=PatientIdInputField.getText().toString();
CenterIdInput=CenterIdInputField.getText().toString();
Log.e("PatientIdInput is",PatientIdInput);
Log.e("CenterIdInput is",CenterIdInput);
于 2013-06-28T07:13:14.263 に答える
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()
于 2013-06-28T07:14:31.020 に答える
0

ボタンをクリックしたときに編集テキストデータが必要な場合。

edit-text からデータを取得するためのコードをボタンのクリック リスナーに配置するよりも。

コードは実行されますが、その時点では値がないため、何も取得できません。

そのため、コードのその場所にedit-text の値が必要な場合は、edit-text value gets code を配置します

  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()からコードを取得する edit-text 値を削除 します。

于 2013-06-28T09:10:43.897 に答える