簡體   English   中英

如何從getter setter類獲取數據?

[英]How to get data from getter setter class?

我是android開發的初學者,遇到一些問題,請幫幫我。 我有2屏幕登錄和登錄后,我已經在登錄類中設置了用戶ID,我想在登錄后如何使用該user_id來獲取,當我使用get方法find Null時如何解決此問題。
這是我的登錄代碼的公共類LoginActivity擴展FragmentActivity {

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類的公共類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; 私人字串full_name; 私有字符串display_name; 私有字符串user_image; 私人String性別; 私有字符串授權密鑰;

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

}`

//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", "");

您可以編寫並應用以下提到的步驟(請忽略任何語法錯誤,我為您提供了簡單的邏輯步驟)。

步驟1-如下創建全局應用程序級別的loginObject setter和getter。 確保在清單中定義Application類,就像為LoginActivity進行操作一樣

公共類ApplicationClass擴展了Application {

private LoginBean loginObject;



public void setLoginBean(LoginBean object) {

    this.loginObject = object;
}

public LoginBean getName() {

   return this.loginObject

}

}

步驟-2在LoginActivity中獲取ApplicationClass對象引用的實例以設置此全局loginObject

例如,您當前的LoginActivity中的setLogin對象是這樣的

......

私有ApplicationClass appObject;

......

@Override受保護的void onCreate(Bundle savedInstanceState){

......

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

.......

appObject.setLoginBean(loginObject)

}

步驟-3在任何其他Activity中獲取ApplicationClass對象引用的實例,並在需要訪問此登錄數據的位置獲取此全局loginObject。

例如在您的otherActivity中的getLogin對象是這樣的

......

私有ApplicationClass appObject;

......

@Override受保護的void onCreate(Bundle savedInstanceState){

......

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

.......

LoginBean loginObject = appObject.getLoginBean();

}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM