【问题标题】:Volley and sessions排球和会议
【发布时间】:2018-11-11 20:43:39
【问题描述】:

我想在登录期间将下面的 jsonArray 存储在会话中,并在稍后在另一个活动中需要时逐个访问这些元素。我完全糊涂了。登录成功后,我得到以下数据。我该怎么做?这是我的登录页面

public class Login extends AppCompatActivity {
String mobile, password;
TextView forgot_password;
EditText mobile_num,pass;
Button log_btn;
AlertDialog.Builder builder;
private Session session;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_login);
    Login.this.setTitle("Vendor Screen");
    builder = new AlertDialog.Builder(Login.this);
    forgot_password = findViewById(R.id.forgot_pwd);
    log_btn = findViewById(R.id.login_btn);
    mobile_num = findViewById(R.id.mobile);
    pass = findViewById(R.id.password);
    forgot_password.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Intent i = new Intent(Login.this,Forgot_password.class);
            startActivity(i);
        }
    });

    //Login Page
    log_btn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            ConnectivityManager ConnectionManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
            NetworkInfo networkInfo = ConnectionManager.getActiveNetworkInfo();
            if (networkInfo != null && networkInfo.isConnected() == true) {
                mobile = mobile_num.getText().toString();
                password = pass.getText().toString();
                String url = "https://vendorapp.web4rest.com/vendorController/auth?username=" + mobile + "&password=" + password;
                if (mobile.equals("") || password.equals("")) {
                   builder.setTitle("Something went wrong!!");
                    displayAlert("Enter valid mobile number and password");
                }else{
                    final ProgressDialog progressDialog = new ProgressDialog(Login.this);
                    progressDialog.setMessage("Please Wait...");
                    progressDialog.show();
                    StringRequest stringRequest = new StringRequest(Request.Method.POST, url,
                            new Response.Listener<String>() {
                                @Override
                                public void onResponse(String response) {
                                    try {
                                        progressDialog.dismiss();
                                        JSONObject jobject = new JSONObject(response);
                                        if (Integer.parseInt(jobject.getString("status")) == 200) {
                                            Toast.makeText(getApplicationContext(), "Login Success", Toast.LENGTH_LONG).show();
                                           Intent i = new Intent(Login.this, MainActivity.class);
                                            startActivity(i);
                                            finish();
                                        } else {
                                            Toast.makeText(getApplicationContext(), "Login Unsuccessfull. Check mobile number/password", Toast.LENGTH_LONG).show();
                                        }

                                    } catch (JSONException e) {
                                        progressDialog.dismiss();
                                        Log.e("Error", "Login Failed" + e.toString());
                                        e.printStackTrace();
                                        Toast.makeText(Login.this, "Error", Toast.LENGTH_SHORT);
                                    }
                                }
                            }, new Response.ErrorListener() {
                        @Override
                        public void onErrorResponse(VolleyError error) {
                            progressDialog.dismiss();
                            Toast.makeText(Login.this, "Error", Toast.LENGTH_SHORT);
                            error.printStackTrace();
                        }
                    }) {
                        @Override
                        protected Map<String, String> getParams() throws AuthFailureError {
                            Map<String, String> parmams = new HashMap<String, String>();
                            parmams.put("username", mobile);
                            parmams.put("password", password);

                            return parmams;
                       }

                    };
                    MySingleton.getInstance(Login.this).addToRequestque(stringRequest);
                }
            }else {
                Toast.makeText(Login.this, "Network Unavailable", Toast.LENGTH_LONG).show();
            }
        }
    });
}
public void displayAlert(String message){
    builder.setMessage(message);
    builder.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialogInterface, int which) {
            mobile_num.setText("");
            pass.setText("");
        }
    });
    AlertDialog alertDialog =builder.create();
    alertDialog.show();
}

{ “状态”:200, “用户数据”: { “身份证”:“2”, "FIRM_NAME": "公司名称", "CONTACT_NO": "7458236965", "FIRM_EMAIL": "comp@gmail.com", “州”:“卡纳塔克邦”, “城市”:“阿南塔普尔”, "ADDRESS_LINE1": "dgsdfgsdf", “ADDRESS_LINE2”:空, “类型”:“取消注册”, “CATEGORY_ID”:“1”, “REG_NO”:空, “GST_NO”:空, "ECC_CODE": "744411228528", "PAN_NO": "7455852125", "FAX_NO": "741258963", "PIN_CODE": "590006", "CONTACT_PERSON": "阿什维尼", "PERSON_EMAIL": "koustubhc@web4rest.com", "PERSON_MOBILE": "7798671682", “银行”:“阿拉哈巴德银行”, "IS_DELETE": "0", "IFSC_CODE": "ALLB00006", “分支”:“阿拉巴德”, "ACCOUNT_NO": "033252122522", "INITIAL_PASS": "PUTLANvq", “密码”:“fd2811b88d59df925f1a265911ffc539”, “OTP”:“6979”, "CREATED_AT": "2018-05-31 13:02:40", "UPDATED_AT": "2018-05-14 08:59:10", “状态”:“登录” } }

【问题讨论】:

  • 解析 json 响应,然后使用共享首选项在本地存储数据
  • 你能分享一些链接示例吗?
  • 是的,我会发布一个例子,同时你可以谷歌它
  • 好的。 ty @快速学习者

标签: android arrays session android-volley


【解决方案1】:

你可以遵循这个基本思路:

if (Integer.parseInt(jobject.getString("status")) == 200 {
    ...
    SharedPreferences preferences = 
        PreferenceManager.getDefaultSharedPreferences(this);
    SharedPreferences.Editor editor = preferences.edit();

    var userData = jobject.getObject("userdata");
    editor.putInt("ID", userData.getInt("ID"));
    editor.putString("FIRM_NAME", userData.getString("FIRM_NAME"));
    // etc...
    editor.commit();
    ...
}

然后在您的其他活动中:

SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this);
var id = preferences.getInt("ID", -1);
var firmName = preferences.getString("FIRM_NAME", null);

如果未找到首选项,则上面的 -1null 将是给出的值。

【讨论】:

    猜你喜欢
    • 2015-10-02
    • 1970-01-01
    • 2015-05-27
    • 1970-01-01
    • 2013-07-27
    • 1970-01-01
    • 1970-01-01
    • 2020-11-04
    • 1970-01-01
    相关资源
    最近更新 更多