2016-02-01 41 views
-1

我是android開發的初學者,我有一些問題請幫幫我。 我有2個屏幕登錄和登錄後,我已經在登錄類中設置了用戶ID,我想在登錄後使用該用戶ID登錄如何獲取,當我使用get方法時找到Null如何解決此問題。
這裏是我的登錄Code`public類LoginActivity擴展FragmentActivity {如何從getter setter類獲取數據?

private EditText userName; 
private EditText password; 
private TextView forgotPassword; 
private TextView backToHome; 
private Button login; 
private CallbackManager callbackManager; 
private ReferanceWapper referanceWapper; 
private LoginBean loginBean; 
Context context; 
String regid; 
GoogleCloudMessaging gcm; 
String SENDER_ID = "918285686540"; 

public static final String PROPERTY_REG_ID = "registration_id"; 
private static final String PROPERTY_APP_VERSION = "appVersion"; 
private final static int PLAY_SERVICES_RESOLUTION_REQUEST = 9000; 
static final String TAG = "GCM"; 


@Override 
protected void onCreate(Bundle savedInstanceState) { 

    super.onCreate(savedInstanceState); 
    requestWindowFeature(Window.FEATURE_NO_TITLE); 
    setContentView(R.layout.activity_login); 
    Utility.setStatusBarColor(this, R.color.tranparentColor); 
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); 
    Typeface tf = Typeface.createFromAsset(getAssets(), "fonts/OpenSans_Regular.ttf"); 
    setupUI(findViewById(R.id.parentEdit)); 

    userName = (EditText) findViewById(R.id.userName); 
    userName.setTypeface(tf); 
    userName.setFocusable(false); 
    userName.setOnTouchListener(new View.OnTouchListener() { 
     public boolean onTouch(View view, MotionEvent paramMotionEvent) { 
      userName.setFocusableInTouchMode(true); 
      Utility.hideSoftKeyboard(LoginActivity.this); 
      return false; 
     } 
    }); 


    password = (EditText) findViewById(R.id.passwordEText); 
    password.setTypeface(tf); 
    password.setFocusable(false); 
    password.setOnTouchListener(new View.OnTouchListener() { 
     public boolean onTouch(View paramView, MotionEvent paramMotionEvent) { 
      password.setFocusableInTouchMode(true); 
      Utility.hideSoftKeyboard(LoginActivity.this); 
      return false; 
     } 
    }); 


    forgotPassword = (TextView) findViewById(R.id.forgotPassword); 
    forgotPassword.setTypeface(tf); 
    forgotPassword.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      Intent intent = new Intent(getApplicationContext(),ForgotPasswordActivity.class); 
      startActivity(intent); 
     } 
    }); 

    backToHome = (TextView) findViewById(R.id.fromLogToHome); 
    backToHome.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      onBackPressed(); 
     } 
    }); 
    login = (Button) findViewById(R.id.loginBtn); 

    login.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 

      doLoginTask(); 
      // Intent intent = new Intent(getApplicationContext(), AfterLoginActivity.class); 
      // startActivity(intent); 

     } 
    }); 
} 


private void doLoginTask() { 

    String strEmail = userName.getText().toString(); 
    String strPassword = password.getText().toString(); 
    if (strEmail.length() == 0) { 
     userName.setError("Email Not Valid"); 
    } else if (!Utility.isEmailValid(strEmail.trim())) { 
     userName.setError("Email Not Valid"); 
    } else if (strPassword.length() == 0) { 
     password.setError(getString(R.string.password_empty)); 
    } else { 

     JSONObject jsonObject = null; 
     try { 
      jsonObject = new JSONObject(); 
      jsonObject.putOpt(Constants.USER_NAME, strEmail); 
      jsonObject.putOpt(Constants.USER_PASSWORD, strPassword); 
      jsonObject.putOpt(Constants.DEVICE_TOKEN, "11"); 
      jsonObject.putOpt(Constants.MAC_ADDRESS, "111"); 
      jsonObject.putOpt(Constants.GPS_LATITUDE, "1111"); 
      jsonObject.putOpt(Constants.GPS_LONGITUDE, "11111"); 
     } catch (JSONException e) { 
      e.printStackTrace(); 
     } 
     final ProgressDialog pDialog = new ProgressDialog(this); 
     pDialog.setMessage("Loading..."); 
     pDialog.show(); 

     CustomJSONObjectRequest jsonObjectRequest = new CustomJSONObjectRequest(Request.Method.POST, Constants.USER_LOGIN_URL, jsonObject, new Response.Listener<JSONObject>() { 
      @Override 
      public void onResponse(JSONObject response) { 
       pDialog.dismiss(); 
       Log.e("LoginPage", "OnResponse =" + response.toString()); 
       getLogin(response); 
       //LoginBean lb = new LoginBean(); 
       //Toast.makeText(getApplicationContext(),lb.getFull_name()+"Login Successfuly",Toast.LENGTH_LONG).show(); 
       Intent intent = new Intent(getApplicationContext(),AfterLoginActivity.class); 
       startActivity(intent); 
      } 
     }, new Response.ErrorListener() { 
      @Override 
      public void onErrorResponse(VolleyError error) { 
       Toast.makeText(getApplicationContext(),"Something, wrong please try again",Toast.LENGTH_LONG).show(); 
       pDialog.dismiss(); 

      } 
     }); 
     jsonObjectRequest.setRetryPolicy(new DefaultRetryPolicy(
       5000, 
       DefaultRetryPolicy.DEFAULT_MAX_RETRIES, 
       DefaultRetryPolicy.DEFAULT_BACKOFF_MULT)); 
     Log.e("LoginPage", "Url= " + Constants.USER_LOGIN_URL + " PostObject = " + jsonObject.toString()); 
     AppController.getInstance().addToRequestQueue(jsonObjectRequest); 
    } 

} 

public void getLogin(JSONObject response) { 
    LoginBean loginBean = new LoginBean(); 
    if (response != null){ 
     try { 
      JSONObject jsonObject = response.getJSONObject("data"); 
      loginBean.setUser_id(jsonObject.getString("user_id")); 
      loginBean.setFull_name(jsonObject.getString("full_name")); 
      loginBean.setDisplay_name(jsonObject.getString("display_name")); 
      loginBean.setUser_image(jsonObject.getString("user_image")); 
      loginBean.setGender(jsonObject.getString("gender")); 
      loginBean.setAuthorization_key(jsonObject.getString("authorization_key")); 

     } catch (JSONException e) { 
      e.printStackTrace(); 
     } 
    } 
    Toast.makeText(getApplicationContext(),"User id is "+loginBean.getUser_id(),Toast.LENGTH_LONG).show(); 
} 
public void onBackPressed() { 
    finish(); 
} 

public void setupUI(View view) { 

    //Set up touch listener for non-text box views to hide keyboard. 
    if (!(view instanceof EditText)) { 

     view.setOnTouchListener(new View.OnTouchListener() { 

      public boolean onTouch(View v, MotionEvent event) { 
       Utility.hideSoftKeyboard(LoginActivity.this); 
       return false; 
      } 

     }); 
    } 


} 

} `

這裏是我的AfterLogin class`public類AfterLoginActivity擴展FragmentActivity {

private ImageView partyIcon; 
private ImageView dealIcon; 
private ImageView deliveryIcon; 
private TextView txtParty; 
private TextView txtDeals; 
private TextView txtDelivery; 
boolean doubleBackToExitPressedOnce = false; 
int backButtonCount = 0; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    requestWindowFeature(Window.FEATURE_NO_TITLE); 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_after_login); 
    Utility.setStatusBarColor(this, R.color.splash_status_color); 
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); 

    partyIcon = (ImageView)findViewById(R.id.party_Icon); 
    dealIcon = (ImageView)findViewById(R.id.deals_Icon); 
    deliveryIcon = (ImageView)findViewById(R.id.delivery_Icon); 

    partyIcon.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      Intent intent = new Intent(getApplication(), BookPartyActivity.class); 
      startActivity(intent); 

     } 
    }); 
    dealIcon.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      Intent intent = new Intent(getApplication(), DealsActivity.class); 
      startActivity(intent); 

     } 
    }); 
    deliveryIcon.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      LoginBean loginBean = new LoginBean(); 
      Toast.makeText(getBaseContext(),"Auth"+loginBean.getUser_id(),Toast.LENGTH_LONG).show(); 
      Intent intent = new Intent(getApplicationContext(),MyAuction.class); 
      startActivity(intent); 
     } 
    }); 

} 
/* 
public void onBackPressed() 
{ 


    if (doubleBackToExitPressedOnce) 
    { 
     Intent intent = new Intent(getApplicationContext(), MainActivity.class); 
     intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
     startActivity(intent); 
     finish(); 
    } 
    doubleBackToExitPressedOnce = true; 
    Toast.makeText(this, "you have logged in ,plz enjoy the party", Toast.LENGTH_LONG).show(); 
    new Handler().postDelayed(new Runnable() 
    { 
     public void run() 
     { 
      doubleBackToExitPressedOnce = false; 
     } 
    } 
      , 2000L); 
}*/ 
@Override 
public void onBackPressed() 
{ 

    if(backButtonCount >= 1) 
    { 
     Intent intent = new Intent(Intent.ACTION_MAIN); 
     intent.addCategory(Intent.CATEGORY_HOME); 
     intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
     startActivity(intent); 
    } 
    else 
    { 
     Toast.makeText(this, "Press the back button once again to close the application.", Toast.LENGTH_SHORT).show(); 
     backButtonCount++; 
    } 
} 

}`

這裏是LoginBean`公共類LoginBean { private String user_id; private String full_name; private String display_name; private String user_image; 私人字符串性別; private String authorization_key;

public void setUser_id(String user_id) { 
    this.user_id = user_id; 
} 
public String getUser_id() { 
    return user_id; 
} 


public void setFull_name(String full_name) { 
    this.full_name = full_name; 
} 
public String getFull_name() { 
    return full_name; 
} 


public void setDisplay_name(String display_name) { 
    this.display_name = display_name; 
} 
public String getDisplay_name() { 
    return display_name; 
} 


public void setUser_image(String user_image) { 
    this.user_image = user_image; 
} 
public String getUser_image() { 
    return user_image; 
} 


public void setGender(String gender) { 
    this.gender = gender; 
} 
public String getGender() { 
    return gender; 
} 


public void setAuthorization_key(String authorization_key) { 
    this.authorization_key = authorization_key; 
} 
public String getAuthorization_key() { 
    return authorization_key; 
} 

}`

+0

後登錄成功把用戶id在共享偏好,所以你可以使用任何時間任何地方。這是非常容易的方法來保存和獲得完整的應用程序。 –

+0

這是如此簡單的Java問題。請參閱http://www.tutorialspoint.com/java/java_encapsulation.htm以獲得更清晰的理解。 –

+0

@SuhasB登錄成功後,我想點擊deliveryBTN和信息吐司作爲user_id – Vishal

回答

0
//in your both activity or create class 

    private SharedPreferences mSharedPreferences; 


//in your login on getLogin() method ; 

    mSharedPreferences = getSharedPreferences("user_preference",Context.MODE_PRIVATE); 
     //save actual drawable id in this way. 

     if(mSharedPreferences==null) 
      return; 

     SharedPreferences.Editor editor = mSharedPreferences.edit(); 
     editor.putInt("userId", loginBean.getUser_id()); 
     editor.commit(); 


// in your after login acvtivity on deliverable method 

    private SharedPreferences mSharedPreferences; 

mSharedPreferences = getSharedPreferences("user_preference",Context.MODE_PRIVATE); 
if(mSharedPreferences==null) 
      return; 
string userId = mSharedPreferences.getString("userId", ""); 
+0

這對我很有幫助,非常感謝Suhas。 – Vishal

+0

@Vishal歡迎:) –

0

您可以編寫和應用下面提到的步驟(請忽略任何語法錯誤,我給你簡單的邏輯步驟)。

第1步 - 製作一個全局應用程序級別的loginObject setter和getter,如下所示。確保定義應用程序類在你的清單就像你做你的LoginActivity

公共類ApplicationClass擴展應用{

private LoginBean loginObject; 



public void setLoginBean(LoginBean object) { 

    this.loginObject = object; 
} 

public LoginBean getName() { 

    return this.loginObject 

} 

}

步驟 - 2獲取的ApplicationClass對象引用的一個實例LoginActivity設置此全局登錄對象

eg在當前的Loginactivity這樣

setLogin對象......

私人ApplicationClass appObject;

......

@Override 保護無效的onCreate(捆綁savedInstanceState){

...... 

appObject = (ApplicationClass) LoginActivity.this.getApplication(); 

....... 

appObject.setLoginBean(loginObject) 

}

步驟 - 3在任何其他的獲取對象ApplicationClass參考實例活動獲取此全局loginObject,您需要訪問此登錄數據。

例如getLogin對象在你的其他活動中是這樣的

......

private ApplicationClass appObject;

......

@覆蓋 保護無效的onCreate(捆綁savedInstanceState){

...... 

appObject = (ApplicationClass) LoginActivity.this.getApplication(); 

....... 

LoginBean loginObject = appObject.getLoginBean(); 

}

+0

非常感謝你,你的代碼對我來說是完美的。 – Vishal