[英]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.