私はアンドロイドの初心者です。ログインしてから、次のファイル Mainscreenactivity を実行したいのですが、ログインがOKと言う方法ではありませんが、Mainscreenactivityの後に表示されません
login.java
package test.Droidlogin;
import java.util.ArrayList;
import org.apache.http.NameValuePair;
import org.apache.http.message.BasicNameValuePair;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import test.Droidlogin.library.Httppostaux;
import android.app.Activity;
import android.app.ProgressDialog;
import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import android.os.AsyncTask;
import android.os.Bundle;
import android.os.SystemClock;
import android.os.Vibrator;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
public class Login extends Activity {
/** Called when the activity is first created. */
EditText user;
EditText pass;
Button blogin;
TextView registrar;
Httppostaux post;
// String URL_connect="http://www.scandroidtest.site90.com/acces.php";
String IP_Server="10.0.2.2";//IP DE NUESTRO PC
String URL_connect="http://10.0.2.2/droidlogin/acces.php";//ruta en donde estan nuestros archivos
boolean result_back;
private ProgressDialog pDialog;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
post=new Httppostaux();
user= (EditText) findViewById(R.id.edusuario);
pass= (EditText) findViewById(R.id.edpassword);
blogin= (Button) findViewById(R.id.Blogin);
registrar=(TextView) findViewById(R.id.link_to_register);
//Login button action
blogin.setOnClickListener(new View.OnClickListener(){
public void onClick(View view){
//Extreamos datos de los EditText
String usuario=user.getText().toString();
String passw=pass.getText().toString();
//verificamos si estan en blanco
if( checklogindata( usuario , passw )==true){
//si pasamos esa validacion ejecutamos el asynctask pasando el usuario y clave como parametros
new asynclogin().execute(usuario,passw);
}else{
//si detecto un error en la primera validacion vibrar y mostrar un Toast con un mensaje de error.
err_login();
}
}
});
registrar.setOnClickListener(new View.OnClickListener(){
public void onClick(View view){
//Abre el navegador al formulario adduser.html
String url = "http://10.0.2.2/droidlogin/adduser.html";
Intent i = new Intent(Intent.ACTION_VIEW);
i.setData(Uri.parse(url));
startActivity(i);
}
});
}
//vibra y muestra un Toast
public void err_login(){
Vibrator vibrator =(Vibrator) getSystemService(Context.VIBRATOR_SERVICE);
vibrator.vibrate(200);
Toast toast1 = Toast.makeText(getApplicationContext(),"Error:Nombre de usuario o password incorrectos", Toast.LENGTH_SHORT);
toast1.show();
}
/*Valida el estado del logueo solamente necesita como parametros el usuario y passw*/
public boolean loginstatus(String username ,String password ) {
int logstatus=-1;
ArrayList<NameValuePair> postparameters2send= new ArrayList<NameValuePair>();
postparameters2send.add(new BasicNameValuePair("usuario",username));
postparameters2send.add(new BasicNameValuePair("password",password));
//realizamos una peticion y como respuesta obtenes un array JSON
JSONArray jdata=post.getserverdata(postparameters2send, URL_connect);
/*como estamos trabajando de manera local el ida y vuelta sera casi inmediato
* para darle un poco realismo decimos que el proceso se pare por unos segundos para poder
* observar el progressdialog
* la podemos eliminar si queremos
*/
SystemClock.sleep(950);
//si lo que obtuvimos no es null
if (jdata!=null && jdata.length() > 0){
JSONObject json_data; //creamos un objeto JSON
try {
json_data = jdata.getJSONObject(0); //leemos el primer segmento en nuestro caso el unico
logstatus=json_data.getInt("logstatus");//accedemos al valor
Log.e("loginstatus","logstatus= "+logstatus);//muestro por log que obtuvimos
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//validamos el valor obtenido
if (logstatus==0){// [{"logstatus":"0"}]
Log.e("loginstatus ", "invalido");
return false;
}
else{// [{"logstatus":"1"}]
Log.e("loginstatus ", "valido");
return true;
}
}else{ //json obtenido invalido verificar parte WEB.
Log.e("JSON ", "ERROR");
return false;
}
}
//validamos si no hay ningun campo en blanco
public boolean checklogindata(String username ,String password ){
if (username.equals("") || password.equals("")){
Log.e("Login ui", "checklogindata user or pass error");
return false;
}else{
return true;
}
}
class asynclogin extends AsyncTask< String, String, String > {
String user,pass;
protected void onPreExecute() {
//para el progress dialog
pDialog = new ProgressDialog(Login.this);
pDialog.setMessage("Autenticando....");
pDialog.setIndeterminate(false);
pDialog.setCancelable(false);
pDialog.show();
}
protected String doInBackground(String... params) {
//obtnemos usr y pass
user=params[0];
pass=params[1];
//enviamos y recibimos y analizamos los datos en segundo plano.
if (loginstatus(user,pass)==true){
return "ok"; //login valido
}else{
return "err"; //login invalido
}
}
/*Una vez terminado doInBackground segun lo que halla ocurrido
pasamos a la sig. activity
o mostramos error*/
protected void onPostExecute(String result) {
pDialog.dismiss();//ocultamos progess dialog.
Log.e("onPostExecute=",""+result);
if (result.equals("ok")){
Intent i=new Intent(Login.this, HiScreen.class);
i.putExtra("user",user);
startActivity(i);
}else{
err_login();
}
}
}
}
//-----------------------------------------------------------------------
MainscreenActivity.java
package test.Droidlogin;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
public class MainScreenActivity extends Activity{
Button btnViewProducts;
Button btnNewProduct;
boolean result_back;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// Buttons
btnViewProducts = (Button) findViewById(R.id.btnViewProducts);
btnNewProduct = (Button) findViewById(R.id.btnCreateProduct);
// view products click event
btnViewProducts.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
// Launching All products Activity
Intent i = new Intent(getApplicationContext(), AllProductsActivity.class);
startActivity(i);
}
});
// view products click event
btnNewProduct.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
// Launching create new product activity
Intent i = new Intent(getApplicationContext(), NewProductActivity.class);
startActivity(i);
}
});
}
}
ありがとう!