簡體   English   中英

按鈕在Android應用中無響應

[英]Button not responding in a android app

我正在用android開發移動應用程序,並且正在使用Httpost從Web服務獲取信息,但這不是問題,問題是我將操作放在按鈕上,但從未成功,這是我的代碼示例

有什么辦法嗎?

protected void onCreate(Bundle savedInstanceState) 
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_login);
    setTitle("Connexion");

    email = (EditText) this.findViewById(R.id.email);
    password = (EditText) this.findViewById(R.id.password);
    cnx = (Button) this.findViewById(R.id.button1);


    cnx.setOnClickListener(new OnClickListener() 
    {

    @Override
    public void onClick(View v) 
    {

    String em = email.getText().toString();
    String ps = password.getText().toString();
    String url = getString(R.string.serveur);

    ArrayList<BasicNameValuePair> nameValuePairs = new ArrayList<BasicNameValuePair>();
    nameValuePairs.add(new BasicNameValuePair("email", em));
    nameValuePairs.add(new BasicNameValuePair("password", ps));

    try
    {
        HttpClient httpclient = new DefaultHttpClient();
        HttpPost httppost = new HttpPost(url+"/UserLogin");
        httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
        HttpResponse response = httpclient.execute(httppost);
        HttpEntity entity = response.getEntity();
        InputStream is = entity.getContent();
        BufferedReader reader = new BufferedReader(new InputStreamReader(is,"iso-8859-1"),8);
        StringBuilder sb = new StringBuilder();
        String line = reader.readLine();
        sb.append(line + "\n");
        is.close();

          /***************************/
          /* Résultats de la requête */
          /***************************/

         String result = sb.toString();
         JSONObject jObj = new JSONObject(result);

         System.out.println(jObj);
         System.out.println("karim");
    }

    catch(Exception e) {}           

    }       

    });

}

}

您的AsyncTask類在哪里?

所以您需要一個擴展AsyncTask類的類

private class LongOperation extends AsyncTask<String, Void, String> {

            @Override
            protected String doInBackground(String... params) {

    ArrayList<BasicNameValuePair> nameValuePairs = new ArrayList<BasicNameValuePair>();
    nameValuePairs.add(new BasicNameValuePair("email", params[0]));
    nameValuePairs.add(new BasicNameValuePair("password", params[1]));

    try
    {
        HttpClient httpclient = new DefaultHttpClient();
        HttpPost httppost = new HttpPost(params[2]+"/UserLogin");
        httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
        HttpResponse response = httpclient.execute(httppost);
        HttpEntity entity = response.getEntity();
        InputStream is = entity.getContent();
        BufferedReader reader = new BufferedReader(new InputStreamReader(is,"iso-8859-1"),8);
        StringBuilder sb = new StringBuilder();
        String line = reader.readLine();
        sb.append(line + "\n");
        is.close();

          /***************************/
          /* Résultats de la requête */
          /***************************/

         String result = sb.toString();
         JSONObject jObj = new JSONObject(result);

         System.out.println(jObj);
         System.out.println("karim");

        return ""; 
    }

    catch(Exception e) {}           
         return "Error thrown";
    }       



            }

            @Override
            protected void onPostExecute(String result) {

                // might want to play with the returned string passed
                // into onPostExecute() but that is upto you
            }

            @Override
            protected void onPreExecute() {}

            @Override
            protected void onProgressUpdate(Void... values) {}
        }
    }

而且您的onClick應該看起來像這樣

cnx.setOnClickListener(new OnClickListener() 
{

@Override
public void onClick(View v) 
{
           String em = email.getText().toString();
           String ps = password.getText().toString();
           String url = getString(R.string.serveur);
           new LongOperation().execute(em, ps, url);
}


});

並確保您在AndroidManifest中具有互聯網許可

<uses-permission android:name="android.permission.INTERNET" />

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM