私のメソッドcheckInvited()
からブール値を返そうとしています。このメソッドには、AsyncTask<Void,Void,String>
を継承するクラスが含まれます。これは完全な方法AsyncTaskを拡張するクラスを含むメソッドから値を返すことができません
public boolean checkInvited(String player_id){
final String g_id = game_id;
final String fr_id = player_id;
class CheckInvited extends AsyncTask<Void, Void, String>{
boolean invited;
ProgressDialog loading;
@Override
protected void onPreExecute(){
super.onPreExecute();
loading = ProgressDialog.show(InviteFriends.this,"Checking Invite Status","Please Wait...",false,false);
}
@Override
protected void onPostExecute(String s){
super.onPostExecute(s);
loading.dismiss();
JSON_STRING = s;
if (s.trim().equals("0")){
invited = false;
} else {
invited = true;
}
}
@Override
protected String doInBackground(Void... params){
HashMap<String, String> hashMap = new HashMap<>();
hashMap.put(Config.KEY_INVITES_GAME_ID, g_id);
hashMap.put(Config.KEY_INVITES_PLAYER_ID, fr_id);
RequestHandler rh = new RequestHandler();
String s = rh.sendPostRequest(Config.URL_CHECK_INVITED, hashMap);
return s;
}
}
CheckInvited ci = new CheckInvited();
ci.execute();
return ci.invited;
}
あり、この方法は、PHPを介しsendPostRequest()
と接触するMySQLデータベースの事前定義されたメソッドを呼び出します。私の問題は、trueまたはfalseを返すようにcheckInvited()
メソッドを取得しています。現在のところ、結果の少なくとも1つが真でなければならないことがわかっている場合にのみ、falseを返します。
ご協力いただきありがとうございます。
AsyncTaskの定義は、非同期に実行されることです。あなたはAsyncTaskが完了する前に偽を返しています(たぶん起動していても) –
メソッド内でクラスを定義しないでください... – hehe