2015-09-21 2 views
1

После входа в систему я возвращаю ответ JSON с сервера с реальным именем пользователя. Но он не будет отображаться в TextView txtName. Что не так с кодом?Ответные данные не отображаются

MainActivity.java:

public class MainActivity extends Activity { 

    private TextView txtName; 
    private TextView txtEmail; 
    private Button btnLogout; 
    private Button btnNeu; 
    private Button btnAlle; 

    private SQLiteHandler db; 
    private SessionManager session; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     if (android.os.Build.VERSION.SDK_INT > 9) { 
      StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build(); 
      StrictMode.setThreadPolicy(policy); 
      } 

     txtName = (TextView) findViewById(R.id.name); 
     txtEmail = (TextView) findViewById(R.id.email); 
     btnLogout = (Button) findViewById(R.id.btnLogout); 
     btnNeu = (Button) findViewById(R.id.neu); 
     btnAlle = (Button) findViewById(R.id.alle); 

     // SqLite database handler 
     db = new SQLiteHandler(getApplicationContext()); 

     // session manager 
     session = new SessionManager(getApplicationContext()); 

     if (!session.isLoggedIn()) { 
      logoutUser(); 
     } 

     // Fetching user details from sqlite 
     HashMap<String, String> user = db.getUserDetails(); 

     String name = user.get("name"); 
     String email = user.get("email"); 

     // Displaying the user details on the screen 
     txtName.setText(name); 
     txtEmail.setText(email); 

     ... 

    } 

    private void logoutUser() { 
     session.setLogin(false); 

     db.deleteUsers(); 

     Intent intent = new Intent(MainActivity.this, LoginActivity.class); 
     startActivity(intent); 
     finish(); 
    } 
} 

SQLiteHandler.java:

public class SQLiteHandler extends SQLiteOpenHelper { 

    private static final String TAG = SQLiteHandler.class.getSimpleName(); 

    // All Static variables 
    // Database Version 
    private static final int DATABASE_VERSION = 1; 

    // Database Name 
    private static final String DATABASE_NAME = "android_api"; 

    // Login table name 
    private static final String TABLE_LOGIN = "login"; 

    // Login Table Columns names 
    private static final String KEY_ID = "id"; 
    private static final String KEY_NAME = "name"; 
    private static final String KEY_EMAIL = "email"; 
    private static final String KEY_UID = "uid"; 
    private static final String KEY_CREATED_AT = "created_at"; 

    public SQLiteHandler(Context context) { 
     super(context, DATABASE_NAME, null, DATABASE_VERSION); 
    } 

    // Creating Tables 
    @Override 
    public void onCreate(SQLiteDatabase db) { 
     String CREATE_LOGIN_TABLE = "CREATE TABLE " + TABLE_LOGIN + "(" 
       + KEY_ID + " INTEGER PRIMARY KEY," + KEY_NAME + " TEXT," 
       + KEY_EMAIL + " TEXT UNIQUE," + KEY_UID + " TEXT," 
       + KEY_CREATED_AT + " TEXT" + ")"; 
     db.execSQL(CREATE_LOGIN_TABLE); 

     Log.d(TAG, "Database tables created"); 
    } 

    // Upgrading database 
    @Override 
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 
     // Drop older table if existed 
     db.execSQL("DROP TABLE IF EXISTS " + TABLE_LOGIN); 

     // Create tables again 
     onCreate(db); 
    } 

    /** 
    * Storing user details in database 
    * */ 
    public void addUser(String name, String email, String uid, String created_at) { 
     SQLiteDatabase db = this.getWritableDatabase(); 

     ContentValues values = new ContentValues(); 
     values.put(KEY_NAME, name); // Name 
     values.put(KEY_EMAIL, email); // Email 
     values.put(KEY_UID, uid); // Email 
     values.put(KEY_CREATED_AT, created_at); // Created At 

     // Inserting Row 
     long id = db.insert(TABLE_LOGIN, null, values); 
     db.close(); // Closing database connection 

     Log.d(TAG, "New user inserted into sqlite: " + id); 
    } 

    /** 
    * Getting user data from database 
    * */ 
    public HashMap<String, String> getUserDetails() { 
     HashMap<String, String> user = new HashMap<String, String>(); 
     String selectQuery = "SELECT * FROM " + TABLE_LOGIN; 

     SQLiteDatabase db = this.getReadableDatabase(); 
     Cursor cursor = db.rawQuery(selectQuery, null); 
     // Move to first row 
     cursor.moveToFirst(); 
     if (cursor.getCount() > 0) { 
      user.put("name", cursor.getString(1)); 
      user.put("email", cursor.getString(2)); 
      user.put("uid", cursor.getString(3)); 
      user.put("created_at", cursor.getString(4)); 
     } 
     cursor.close(); 
     db.close(); 
     // return user 
     Log.d(TAG, "Fetching user from Sqlite: " + user.toString()); 

     return user; 
    } 

    /** 
    * Getting user login status return true if rows are there in table 
    * */ 
    public int getRowCount() { 
     String countQuery = "SELECT * FROM " + TABLE_LOGIN; 
     SQLiteDatabase db = this.getReadableDatabase(); 
     Cursor cursor = db.rawQuery(countQuery, null); 
     int rowCount = cursor.getCount(); 
     db.close(); 
     cursor.close(); 

     // return row count 
     return rowCount; 
    } 

    /** 
    * Re crate database Delete all tables and create them again 
    * */ 
    public void deleteUsers() { 
     SQLiteDatabase db = this.getWritableDatabase(); 
     // Delete All Rows 
     db.delete(TABLE_LOGIN, null, null); 
     db.close(); 

     Log.d(TAG, "Deleted all user info from sqlite"); 
    } 

} 

LoginActivity.java:

public class LoginActivity extends Activity { 
    // LogCat tag 
    private static final String TAG = RegisterActivity.class.getSimpleName(); 
    private Button btnLogin; 
    private Button btnLinkToRegister; 
    private EditText inputEmail; 
    private EditText inputPassword; 
    private ProgressDialog pDialog; 
    private SessionManager session; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_login); 

     inputEmail = (EditText) findViewById(R.id.email); 
     inputPassword = (EditText) findViewById(R.id.password); 
     btnLogin = (Button) findViewById(R.id.btnLogin); 
     btnLinkToRegister = (Button) findViewById(R.id.btnLinkToRegisterScreen); 

     // Progress dialog 
     pDialog = new ProgressDialog(this); 
     pDialog.setCancelable(false); 

     // Session manager 
     session = new SessionManager(getApplicationContext()); 

     // Check if user is already logged in or not 
     if (session.isLoggedIn()) { 
      // User is already logged in. Take him to main activity 
      Intent intent = new Intent(LoginActivity.this, MainActivity.class); 
      startActivity(intent); 
      finish(); 
     } 

     // Login button Click Event 
     btnLogin.setOnClickListener(new View.OnClickListener() { 

      public void onClick(View view) { 
       String email = inputEmail.getText().toString(); 
       String password = inputPassword.getText().toString(); 

       // Check for empty data in the form 
       if (email.trim().length() > 0 && password.trim().length() > 0) { 
        // login user 
        checkLogin(email, password); 
       } else { 
        // Prompt user to enter credentials 
        Toast.makeText(getApplicationContext(), 
          "Bitte Benutzername und Passwort eintragen!", Toast.LENGTH_LONG) 
          .show(); 
       } 
      } 

     }); 

     // Link to Register Screen 
     btnLinkToRegister.setOnClickListener(new View.OnClickListener() { 

      public void onClick(View view) { 
       Intent i = new Intent(getApplicationContext(), 
         RegisterActivity.class); 
       startActivity(i); 
       finish(); 
      } 
     }); 

    } 

    /** 
    * function to verify login details in mysql db 
    * */ 
    private void checkLogin(final String email, final String password) { 
     // Tag used to cancel the request 
     String tag_string_req = "req_login"; 

     pDialog.setMessage("Login ..."); 
     showDialog(); 

     StringRequest strReq = new StringRequest(Method.POST, 
       AppConfig.URL_REGISTER, new Response.Listener<String>() { 

        @Override 
        public void onResponse(String response) { 
         Log.d(TAG, "Login Response: " + response.toString()); 
         hideDialog(); 

         try { 
          JSONObject jObj = new JSONObject(response); 
          boolean error = jObj.getBoolean("error"); 

          // Check for error node in json 
          if (!error) { 
           // user successfully logged in 
           // Create login session 
           session.setLogin(true); 

           // Launch main activity 
           Intent intent = new Intent(LoginActivity.this, 
             MainActivity.class); 
           startActivity(intent); 
           finish(); 
          } else { 
           // Error in login. Get the error message 
           String errorMsg = jObj.getString("error_msg"); 
           Toast.makeText(getApplicationContext(), 
             errorMsg, Toast.LENGTH_LONG).show(); 
          } 
         } catch (JSONException e) { 
          // JSON error 
          e.printStackTrace(); 
         } 

        } 
       }, new Response.ErrorListener() { 

        @Override 
        public void onErrorResponse(VolleyError error) { 
         Log.e(TAG, "Login Error: " + error.getMessage()); 
         Toast.makeText(getApplicationContext(), 
           error.getMessage(), Toast.LENGTH_LONG).show(); 
         hideDialog(); 
        } 
       }) { 

      @Override 
      protected Map<String, String> getParams() { 
       // Posting parameters to login url 
       Map<String, String> params = new HashMap<String, String>(); 
       params.put("tag", "login"); 
       params.put("email", email); 
       params.put("password", password); 

       return params; 
      } 

     }; 

     // Adding request to request queue 
     AppController.getInstance().addToRequestQueue(strReq, tag_string_req); 
    } 

    private void showDialog() { 
     if (!pDialog.isShowing()) 
      pDialog.show(); 
    } 

    private void hideDialog() { 
     if (pDialog.isShowing()) 
      pDialog.dismiss(); 
    } 
} 
+0

, когда вы подключаетесь к этому «сервер»? – eduyayo

+0

Я подключаюсь к серверу через другое действие, называемое LoginActivity. вам тоже нужен этот код? – user3713946

+0

отлаживается, и коррекция оставляет данные внутри этих таблиц и т. Д. действительно работает ?? Вы открыли базу данных и заверили, что информация вставлена? нет ошибок в консоли и т. д.? – eduyayo

ответ

1

Наконец, я нашел код я забыл вставить в LoginActivity.java: Сейчас он работает

public class LoginActivity extends Activity { 
    private static final String TAG = RegisterActivity.class.getSimpleName(); 
    private Button btnLogin; 
    private Button btnLinkToRegister; 
    private EditText inputEmail; 
    private EditText inputPassword; 
    private ProgressDialog pDialog; 
    private SessionManager session; 
    private SQLiteHandler db; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_login); 

     inputEmail = (EditText) findViewById(R.id.email); 
     inputPassword = (EditText) findViewById(R.id.password); 
     btnLogin = (Button) findViewById(R.id.btnLogin); 
     btnLinkToRegister = (Button) findViewById(R.id.btnLinkToRegisterScreen); 

     // Progress dialog 
     pDialog = new ProgressDialog(this); 
     pDialog.setCancelable(false); 

     db = new SQLiteHandler(getApplicationContext()); 

     // Session manager 
     session = new SessionManager(getApplicationContext()); 

     // Check if user is already logged in or not 
     if (session.isLoggedIn()) { 
      // User is already logged in. Take him to main activity 
      Intent intent = new Intent(LoginActivity.this, MainActivity.class); 
      startActivity(intent); 
      finish(); 
     } 

     // Login button Click Event 
     btnLogin.setOnClickListener(new View.OnClickListener() { 

      public void onClick(View view) { 
       String email = inputEmail.getText().toString(); 
       String password = inputPassword.getText().toString(); 

       // Check for empty data in the form 
       if (email.trim().length() > 0 && password.trim().length() > 0) { 
        // login user 
        checkLogin(email, password); 
       } else { 
        // Prompt user to enter credentials 
        Toast.makeText(getApplicationContext(), 
          "Bitte Benutzername und Passwort eintragen!", Toast.LENGTH_LONG) 
          .show(); 
       } 
      } 

     }); 

     // Link to Register Screen 
     btnLinkToRegister.setOnClickListener(new View.OnClickListener() { 

      public void onClick(View view) { 
       Intent i = new Intent(getApplicationContext(), 
         RegisterActivity.class); 
       startActivity(i); 
       finish(); 
      } 
     }); 

    } 

    /** 
    * function to verify login details in mysql db 
    * */ 
    private void checkLogin(final String email, final String password) { 
     // Tag used to cancel the request 
     String tag_string_req = "req_login"; 

     pDialog.setMessage("Login ..."); 
     showDialog(); 

     StringRequest strReq = new StringRequest(Method.POST, 
       AppConfig.URL_REGISTER, new Response.Listener<String>() { 

        @Override 
        public void onResponse(String response) { 
         Log.d(TAG, "Login Response: " + response.toString()); 
         hideDialog(); 

         try { 
          JSONObject jObj = new JSONObject(response); 
          boolean error = jObj.getBoolean("error"); 

          // Check for error node in json 
          if (!error) { 
           // user successfully logged in 
           // Create login session 
           session.setLogin(true); 

           String uid = jObj.getString("uid"); 
           JSONObject user = jObj.getJSONObject("user"); 
           String name = user.getString("name"); 
           String email = user.getString("email"); 
           String created_at = user.getString("created_at"); 

           // Inserting row in users table 
           db.addUser(name, email, uid, created_at); 

           // Launch main activity 
           Intent intent = new Intent(LoginActivity.this, 
             MainActivity.class); 
           startActivity(intent); 
           finish(); 
          } else { 
           // Error in login. Get the error message 
           String errorMsg = jObj.getString("error_msg"); 
           Toast.makeText(getApplicationContext(), 
             errorMsg, Toast.LENGTH_LONG).show(); 
          } 
         } catch (JSONException e) { 
          // JSON error 
          e.printStackTrace(); 
         } 

        } 
       }, new Response.ErrorListener() { 

        @Override 
        public void onErrorResponse(VolleyError error) { 
         Log.e(TAG, "Login Error: " + error.getMessage()); 
         Toast.makeText(getApplicationContext(), 
           error.getMessage(), Toast.LENGTH_LONG).show(); 
         hideDialog(); 
        } 
       }) { 

      @Override 
      protected Map<String, String> getParams() { 
       // Posting parameters to login url 
       Map<String, String> params = new HashMap<String, String>(); 
       params.put("tag", "login"); 
       params.put("email", email); 
       params.put("password", password); 

       return params; 
      } 

     }; 

     // Adding request to request queue 
     AppController.getInstance().addToRequestQueue(strReq, tag_string_req); 
    } 

    private void showDialog() { 
     if (!pDialog.isShowing()) 
      pDialog.show(); 
    } 

    private void hideDialog() { 
     if (pDialog.isShowing()) 
      pDialog.dismiss(); 
    } 
} 
+0

убить вас со страданиями может быть приятным приключением: P ... Давайте попробуем проголосовать за вас, чтобы вы могли стать хорошим пользователем SO – eduyayo

+0

Я должен поблагодарить вас очень много! спасибо, благодарю вас, благодарю вас за помощь! ты отличный парень! :) – user3713946

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