スレッドから情報を取得しようとしていますが、方法がわかりません。私はスレッドを使用したことがなく、私の質問はそれについてです。
1つのスレッドでWebサービスを使用するアクティビティが1つあります。この後、結果がtrueの場合は何らかのアクションを実行し、結果がfalseの場合は他のアクションを実行します。
スレッド内のローカル変数またはグローバル変数を変更できないため、その方法がわかりません。スレッドにインテントを投げたくありません。
この結果を返す方法はありますか?ありがとう
これは私のアクティビティコードです:
public class RegisterActivity extends Activity {
//Constantes para la invocacion del web service
private static final String NAMESPACE = "http://webservice.proyecto";
private static String URL="http://192.168.1.34:8080/BDManejador/services/conexion?wsdl";
private static final String METHOD_NAME = "nuevo_usuario";
private static final String SOAP_ACTION ="http://ws.webapp.ejemplo/nuevo_usuario";
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_register);
}
public void goMainMenu (View v) {
final EditText email = (EditText)findViewById(R.id.user);
final EditText password = (EditText)findViewById(R.id.pass);
EditText repeat_password = (EditText)findViewById(R.id.rpass);
// COMPROBAR EMAIL VALIDO
if((email.getText().toString().length() == 0) || (!email.getText().toString().contains("@")) ||(!email.getText().toString().contains("."))) {
Toast toast= Toast.makeText(getApplicationContext(), "DIRECCIÓN DE CORREO ELECTRÓNICO NO VÁLIDA", Toast.LENGTH_LONG);
toast.show();
}
else {
// COMPROBAR CONTRASEÑA REPETIDA IGUAL
if((password.getText().toString().compareTo(repeat_password.getText().toString()) == 0) && (password.getText().toString().length()!=0)) {
// USAMOS EL WEBSERVICE
Thread networkThread = new Thread() {
@Override
public void run() {
try {
SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);
request.addProperty("email", email.getText().toString());
request.addProperty("pass", password.getText().toString());
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
envelope.setOutputSoapObject(request);
HttpTransportSE ht = new HttpTransportSE(URL);
ht.call(SOAP_ACTION, envelope);
final SoapPrimitive response = (SoapPrimitive)envelope.getResponse();
final boolean str = Boolean.parseBoolean(response.toString());
if (str) {
Log.v("MYAPP", "INSERTADO");
}
else
Log.v("MYAPP", "NO INSERTADO");
}
catch (Exception e) {
e.printStackTrace();
}
}
};
networkThread.start();
//ESPERAR QUE TERMINE LA OPERACION
try {
networkThread.join();
} catch (InterruptedException e) {
e.printStackTrace();
}
//LANZAR LA NUEVA ACTIVIDAD
Intent intent = new Intent(RegisterActivity.this, MenuActivity.class);
startActivity(intent);
}
else {
Toast toast= Toast.makeText(getApplicationContext(), "LAS CONTRASEÑAS DEBEN SER IGUALES", Toast.LENGTH_LONG);
toast.show();
}
}
}
}
str
したがって、変数ブール値がtrueの場合に意図をスローしたいと思います。
誰かが助けることができますか?