AsyncTask でデータベースからデータをフェッチし、それが null の場合は、警告テキストをトーストしたいと考えています。AsyncTask で試してみましたが、ワーカー スレッドで呼び出されないことがわかりました。ここに私の doInBackground メソッドがあります:
protected String doInBackground(Boolean... params) {
String result = null;
StringBuilder sb = new StringBuilder();
try {
HttpClient httpclient = new DefaultHttpClient();
HttpGet httppost = new HttpGet( "http://191.162.2.235/getProducts.php?login=1&user_name="+UserName+"&user_pass="+Password);
HttpResponse response = httpclient.execute(httppost);
if (response.getStatusLine().getStatusCode() != 200) {
Log.d("MyApp", "Server encountered an error");
}
BufferedReader reader = new BufferedReader(
new InputStreamReader(
response.getEntity().getContent(), "UTF8"));
sb = new StringBuilder();
sb.append(reader.readLine() + "\n");
String line = null;
while ((line = reader.readLine()) != null) {
sb.append(line + "\n");
}
result = sb.toString();
if ( result == null ) {
// Toast.makeText(getApplicationContext(), "You entered wrong values.", Toast.LENGTH_LONG).show();
asyncTask.cancel(true);
Intent inte=new Intent(MainActivity.this, MainActivity.class);
inte.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
inte.addCategory(Intent.CATEGORY_HOME);
startActivity(inte);
}
}
catch (Exception e) {
Log.e("log_tag", "Error converting result " + e.toString());
}
return result;
}
タスクをキャンセルし、コードで新しいインテントを作成しました。あなたはそれらを気にしません。Toast.makeText.. 行が表示されます。もちろん、このように試してみましたが、エラーが発生します。これどうやってするの?AsyncTask で呼び出されない場合、どのように呼び出す必要がありますか?