2012-12-14 39 views
0

我是android的初学者。我有一个登录,然后我想运行下面的文件Mainscreenactivity但是登录不怎么说的好,但不显示Mainscreenactivity下一个android活动

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); 

      } 
     }); 
    } 
} 

谢谢!

+0

你能改一下你的问题吗?不清楚。 –

+0

你的问题很可能会接近。很难理解你在问题中想要问什么。修改你的问题并为它添加一些含义。 –

+0

您的代码指向HiScreen,而不是MainScreenActivity – njzk2

回答

2

我有一个登录,然后我想运行下面的文件Mainscreenactivity但是登录不怎么说的好,但不显示Mainscreenactivity

从你的问题我的理解是,

if (result.equals("ok")){ 
    Intent i=new Intent(Login.this, HiScreen.class); 
    i.putExtra("user",user); 
    startActivity(i); 
} 

在上面的代码中,意图应,

Intent i = new Intent(Login.this, MainscreenActivity.class); 

其实你开始的活动HiScreen不是MainscreenActivity

0

下面写的代码行

Intent i=new Intent(Login.this, MainscreenActivity.class); 
i.putExtra("user",user); 
startActivity(i); 

代替

Intent i=new Intent(Login.this, HiScreen.class); 
i.putExtra("user",user); 
startActivity(i); 

,并添加MainscreenActivity到androidmanifest文件。

<activity 
    android:name=".MainscreenActivity" 
    android:label="@string/title_activity_main" /> 

它会解决你的问题。

+0

感谢您的回复我试试 –

+0

未找到。类文件编辑器源未找到 –

+0

主题[<1>主](暂停(例外的RuntimeException))\t \t ActivityThread.performLaunchActivity(ActivityThread $ ActivityClientRecord,意图)线:1955年\t \t这是错误 –

0

用于字符串匹配使用equalsIgnoreCase并检查您的响应是否返回OK,并且您的类名称是否在Menifest中声明。

if (result.equalsIgnoreCase("ok")){ 

     Intent i=new Intent(Login.this, MainscreenActivity.class); 
     i.putExtra("user",user); 
     startActivity(i); 

    }else{ 
     err_login(); 
    } 
2
In manifest.xml 

<activity 
      android:name=".MainscreenActivity" 
      android:label="@string/app_name"/> 

In login.java 

if (result.equals("ok")){ 

       Intent intent=new Intent(Login.this,MainscreenActivity.class); 
       i.putExtra("user",user); 
       startActivity(intent); 

      }else{ 
       err_login(); 
      } 
+0

感谢,但没找到 –

相关问题