0

お手数をおかけして申し訳ありませんが、私はこれをあまりにも長く使用しており、簡単なものだと確信していますが、疲れていて見えません。すべて正常に動作しますが、「文字列結果」は空です

package com.example.me;

import java.util.ArrayList;

import org.apache.http.NameValuePair;
import org.apache.http.message.BasicNameValuePair;

import android.os.AsyncTask;
import android.os.Bundle;
import android.app.Activity;
import android.widget.Button;
import android.widget.TextView;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;

public class MainActivity extends Activity {

    Button btnLoginButton;
    TextView tmpError, tmpUsername, tmpPassword;
    ArrayList<NameValuePair> postParameters;
    String response;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        tmpError = (TextView) findViewById(R.id.lblMessage);
        tmpUsername = (TextView) findViewById(R.id.txtUsername);  
        tmpPassword = (TextView) findViewById(R.id.txtPassword);  

        addListenerOnButton();
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.activity_main, menu);
        return true;
    }

    public void addListenerOnButton() {

        btnLoginButton = (Button) findViewById(R.id.btnLogin); 
        btnLoginButton.setOnClickListener(new OnClickListener() {
            public void onClick(View arg) {
                try{
                    triggerClick();
                }
                catch (Exception e) {         
                    tmpError.setText("[]" + e.toString());  
                }
            } 
        });
    }

    private void triggerClick() {  

        postParameters = new ArrayList<NameValuePair>();  
        postParameters.add(new BasicNameValuePair("username", tmpUsername.getText().toString()));  
        postParameters.add(new BasicNameValuePair("password", tmpPassword.getText().toString()));  

        final class HttpTask
                extends
                AsyncTask<String/* Param */, Boolean /* Progress */, String /* Result */> {

            @Override
            protected String doInBackground(String... params) {
                publishProgress(true);
                try {
                response = CustomHttpClient.executeHttpPost("http://some.url/thatiknoworks/check.php", postParameters);
                            return response;
                } catch (Exception e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }    

            }

            @Override
            protected void onPostExecute(String result) {
                publishProgress(false);

                result = result.replaceAll("\\s+","");  

                if(result.equals("1")) { 
                    tmpError.setText("Correct");
                }
                else {  
                    tmpError.setText("Sorry!!("+result+")");
                }
            }

        }       

        new HttpTask().execute();
    }  
}

空の「結果」文字列で何度も戻ってきます:-(

4

3 に答える 3

1

String response;グローバル変数として宣言してください。

protected String doInBackground(String... params) 
 {
   publishProgress(true);
   try 
   {
   response=CustomHttpClient.executeHttpPost("http://some.url/thatiknoworks/check.php", postParameters);
   return response;
   } 
   catch (Exception e) 
   {
      e.printStackTrace();
   }    
 }
于 2012-07-18T12:30:17.420 に答える
1

doInBackground()空の文字列を返す場合は、次のようにする必要があります。

protected String doInBackground(String... params) {
            publishProgress(true);
            try {
                 return CustomHttpClient.executeHttpPost("http://some.url/thatiknoworks/check.php", postParameters);
            } catch (Exception e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
                return "";
            }    

        }
于 2012-07-18T12:21:07.273 に答える
1

から空の文字列を返しているため、文字列の結果は空ですdoInBackground()

return "";
于 2012-07-18T12:21:29.173 に答える