静的関数を使用して return ステートメントにアクセスする方法を知りたいです。Async を使用した静的関数があり、別のクラスで return ステートメントを取得したい - 複雑に聞こえることはわかっていますが、簡単な解決策だと確信しています。
ログインクラス
public class LogIn extends Activity {
Button login;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.login);
TextView top = (TextView) findViewById(R.id.textView2);
final EditText user = (EditText) findViewById(R.id.etUser);
final EditText pass = (EditText) findViewById(R.id.etPass);
CheckBox stay = (CheckBox) findViewById(R.id.cBStay);
Button login = (Button) findViewById(R.id.btLogin);
login.setOnClickListener( new View.OnClickListener() {
public void onClick(View v) {
// TODO Auto-generated method stub
String user1 = user.getText().toString();
String pass1 = pass.getText().toString();
if(user1 !=null &user1.length()>=1 & pass1 !=null &pass1.length()>=1) {
ComHelper.SendLogin(user1, pass1);
}
}
});
}
}
ComHelper.class
public class ComHelper extends AsyncTask<String, Void, String> {
static String adress ="http://gta5news.com/login.php";
String user;
String pass;
public static boolean SendLogin(String user1, String pass1){
String user = user1.toString();
String pass = pass1.toString();
new ComHelper().execute(user1, pass1, adress);
return true;
}
private static StringBuilder inputStreamToString(InputStream is) {
String line = "";
StringBuilder total = new StringBuilder();
// Wrap a BufferedReader around the InputStream
BufferedReader rd = new BufferedReader(new InputStreamReader(is));
// Read response until the end
try {
while ((line = rd.readLine()) != null) {
total.append(line);
}
} catch (IOException e) {
e.printStackTrace();
}
// Return full string
return total;
}
@Override
protected String doInBackground(String... params) {
// TODO Auto-generated method stub
InputStream inputStream = null;
HttpClient httpclient = new DefaultHttpClient();
HttpPost post = new HttpPost(adress);
try {
/*Add some data with NameValuePairs */
List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2);
nameValuePairs.add(new BasicNameValuePair("user", user));
nameValuePairs.add(new BasicNameValuePair("password", pass));
post.setEntity(new UrlEncodedFormEntity(nameValuePairs));
/*Execute */
HttpResponse response = httpclient.execute(post);
String str = inputStreamToString(response.getEntity().getContent())
.toString();
Log.w("HttpPost", str);
if (str.toString().equalsIgnoreCase("true"))
return str;
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ClientProtocolException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
}
return null;
}
}
ComHelper.SendLogin()
ここで、 true が返されたか、または少なくとも何かが返されたかどうかを確認したいと思います。
編集:コードが実行されても何も起こらないのは、return ステートメントで何もしていないからだと思います。