2014-09-21 2 views
0

Я делаю приложение для входа в систему с помощью Android с помощью MYSQL и JSON, ошибок не возникает, но я застрял в диалоговом окне и не могу двигаться вперед. Я думаю, что что-то не так с моим onPostExecuteJSON андроид синтаксический анализ. застрял в диалоговом окне

Вот фрагмент кода, содержащий onPostExecute. диалоговое окно «загрузка пользовательского пространства», где я застрял

protected void onPostExecute(JSONObject json) { 
      try { 
       if (json.getString(KEY_SUCCESS) != null) { 

        String res = json.getString(KEY_SUCCESS); 

        if(Integer.parseInt(res) == 1){ 
         pDialog.setMessage("Loading User Space"); 
         pDialog.setTitle("Getting Data"); 

         JSONObject json_user = json.getJSONObject("user"); 

         UserFunctions logout = new UserFunctions(); 
         logout.logoutUser(getApplicationContext()); 
         .getString(KEY_EMAIL),json_user.getString(KEY_USERNAME),json_user.getString(KEY_UID),json_user.getString(KEY_CREATED_AT)); 
         /** 
         User Panel. 
         **/ 
         Intent upanel = new Intent(getApplicationContext(), MainActivity.class); 
         upanel.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
         pDialog.dismiss(); 
         startActivity(upanel); 
         /** 
         * Close Login Screen 
         **/ 
         finish(); 

здесь весь мой код

import android.app.ProgressDialog; 
import android.content.Context; 
import android.net.ConnectivityManager; 
import android.net.NetworkInfo; 
import android.os.AsyncTask; 
import org.json.JSONException; 
import org.json.JSONObject; 
import android.app.Activity; 
import android.content.Intent; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.Button; 
import android.widget.EditText; 
import android.widget.TextView; 
import android.widget.Toast; 

//import com.learn2crack.library.DatabaseHandler; 
import com.learn2crack.library.UserFunctions; 

import java.io.IOException; 
import java.net.HttpURLConnection; 
import java.net.MalformedURLException; 
import java.net.URL; 

public class Login extends Activity { 

    Button btnLogin; 
    Button Btnregister; 
    Button passreset; 
    EditText inputUsername; 
    EditText inputPassword; 
    private TextView loginErrorMsg; 
    /** 
    * Called when the activity is first created. 
    */ 
    private static String KEY_SUCCESS = "success"; 
    private static String KEY_UID = "uid"; 
    private static String KEY_USERNAME = "uname"; 
    private static String KEY_FIRSTNAME = "fname"; 
    private static String KEY_LASTNAME = "lname"; 
    private static String KEY_EMAIL = "email"; 
    private static String KEY_CREATED_AT = "created_at"; 


    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     setContentView(R.layout.activity_login); 

     inputUsername = (EditText) findViewById(R.id.username); 
     inputPassword = (EditText) findViewById(R.id.pword); 
     Btnregister = (Button) findViewById(R.id.registerbtn); 
     btnLogin = (Button) findViewById(R.id.login); 
     loginErrorMsg = (TextView) findViewById(R.id.loginErrorMsg); 




     Btnregister.setOnClickListener(new View.OnClickListener() { 
      public void onClick(View view) { 
       Intent myIntent = new Intent(view.getContext(), MainActivity.class); 
       startActivityForResult(myIntent, 0); 
       finish(); 
      }}); 

/** 
* Login button click event 
* A Toast is set to alert when the Email and Password field is empty 
**/ 
     btnLogin.setOnClickListener(new View.OnClickListener() { 

      public void onClick(View view) { 

       if ( (!inputUsername.getText().toString().equals("")) && (!inputPassword.getText().toString().equals(""))) 
       { 
        NetAsync(view); 
       } 
       else if ((!inputUsername.getText().toString().equals(""))) 
       { 
        Toast.makeText(getApplicationContext(), 
          "Password field empty", Toast.LENGTH_SHORT).show(); 
       } 
       else if ((!inputPassword.getText().toString().equals(""))) 
       { 
        Toast.makeText(getApplicationContext(), 
          "Email field empty", Toast.LENGTH_SHORT).show(); 
       } 
       else 
       { 
        Toast.makeText(getApplicationContext(), 
          "Email and Password field are empty", Toast.LENGTH_SHORT).show(); 
       } 
      } 
     }); 
    } 


/** 
* Async Task to check whether internet connection is working. 
**/ 

    private class NetCheck extends AsyncTask<String,String,Boolean> 
    { 
     private ProgressDialog nDialog; 

     @Override 
     protected void onPreExecute(){ 
      super.onPreExecute(); 
      nDialog = new ProgressDialog(Login.this); 
      nDialog.setTitle("Checking Network"); 
      nDialog.setMessage("Loading.."); 
      nDialog.setIndeterminate(false); 
      nDialog.setCancelable(true); 
      nDialog.show(); 
     } 
     /** 
     * Gets current device state and checks for working internet connection by trying Google. 
     **/ 
     @Override 
     protected Boolean doInBackground(String... args){ 



      ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); 
      NetworkInfo netInfo = cm.getActiveNetworkInfo(); 
      if (netInfo != null && netInfo.isConnected()) { 
       try { 
        URL url = new URL("http://www.google.com"); 
        HttpURLConnection urlc = (HttpURLConnection) url.openConnection(); 
        urlc.setConnectTimeout(3000); 
        urlc.connect(); 
        if (urlc.getResponseCode() == 200) { 
         return true; 
        } 
       } catch (MalformedURLException e1) { 
        // TODO Auto-generated catch block 
        e1.printStackTrace(); 
       } catch (IOException e) { 
        // TODO Auto-generated catch block 
        e.printStackTrace(); 
       } 
      } 
      return false; 

     } 
     @Override 
     protected void onPostExecute(Boolean th){ 

      if(th == true){ 
       nDialog.dismiss(); 
       new ProcessLogin().execute(); 
      } 
      else{ 
       nDialog.dismiss(); 
       loginErrorMsg.setText("Error in Network Connection"); 
      } 
     } 
    } 

    /** 
    * Async Task to get and send data to My Sql database through JSON respone. 
    **/ 
    private class ProcessLogin extends AsyncTask<String, String, JSONObject> { 


     private ProgressDialog pDialog; 

     String username,password; 

     @Override 
     protected void onPreExecute() { 
      super.onPreExecute(); 

      inputUsername = (EditText) findViewById(R.id.username); 
      inputPassword = (EditText) findViewById(R.id.pword); 
      username = inputUsername.getText().toString(); 
      password = inputPassword.getText().toString(); 
      pDialog = new ProgressDialog(Login.this); 
      pDialog.setTitle("Contacting Servers"); 
      pDialog.setMessage("Logging in ..."); 
      pDialog.setIndeterminate(false); 
      pDialog.setCancelable(true); 
      pDialog.show(); 
     } 

     @Override 
     protected JSONObject doInBackground(String... args) { 

      UserFunctions userFunction = new UserFunctions(); 
      JSONObject json = userFunction.loginUser(username, password); 
      return json; 
     } 

     @Override 
     protected void onPostExecute(JSONObject json) { 
      try { 
       if (json.getString(KEY_SUCCESS) != null) { 

        String res = json.getString(KEY_SUCCESS); 

        if(Integer.parseInt(res) == 1){ 
         pDialog.setMessage("Loading User Space"); 
         pDialog.setTitle("Getting Data"); 
         //DatabaseHandler db = new DatabaseHandler(getApplicationContext()); 
         JSONObject json_user = json.getJSONObject("user"); 
         /** 
         * Clear all previous data in SQlite database. 
         **/ 
         UserFunctions logout = new UserFunctions(); 
         logout.logoutUser(getApplicationContext()); 
         //db.addUser(json_user.getString(KEY_FIRSTNAME),json_user.getString(KEY_LASTNAME),json_user.getString(KEY_EMAIL),json_user.getString(KEY_USERNAME),json_user.getString(KEY_UID),json_user.getString(KEY_CREATED_AT)); 
         /** 
         *If JSON array details are stored in SQlite it launches the User Panel. 
         **/ 
         Intent upanel = new Intent(getApplicationContext(), MainActivity.class); 
         upanel.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
         pDialog.dismiss(); 
         startActivity(upanel); 
         /** 
         * Close Login Screen 
         **/ 
         finish(); 
        }else{ 

         pDialog.dismiss(); 
         loginErrorMsg.setText("Incorrect username/password"); 
        } 
       } 
      } catch (JSONException e) { 
       e.printStackTrace(); 
      } 
     } 
    } 
    public void NetAsync(View view){ 
     new NetCheck().execute(); 
    } 
} 
+0

Вместо того, чтобы размещать здесь полный код, вы должны были создать [MCVE] (http://stackoverflow.com/help/mcve) –

+0

Я опубликовал фрагмент кода, который, как я думаю, вызывает проблему, я добавил только целое код ниже для других, если они попросили меня –

+0

, почему вы не отклоняете диалоги вне каких-либо условий? –

ответ

0

возможно добавить pDialog.dismiss(); в предложении поймать JSONException. возможно, у вас есть ошибка, поэтому диалог не будет отклонен?

+0

после того, как диалог «вход в систему» ​​не придумал ничего, он предположил, что намерен основной актив, но этого не произошло. –

Смежные вопросы