-1

我正在尝试在整个应用程序中维护用户 ID 和用户名。我创建了一个名为 Session 的类,它将数据放置和接收到 SharedPreferences 并设置它工作得很好。我遇到的问题是当我去另一个活动中检索它时。

会话类构造函数

 public Session(Context cntx) {
        // TODO Auto-generated constructor stub
        prefs = PreferenceManager.getDefaultSharedPreferences(cntx);
    }

添加用户ID的会话类方法和检索它的方法

 public void setUserID(int userID) {
        prefs.edit().putInt("userID", userID).apply();
    }

public int getID() {
        int userID;

        return userID = prefs.getInt("userID",0);

    }

在登录时设置 ID

 StringRequest stringRequest = new StringRequest(Request.Method.POST, server_url, new Response.Listener<String>() {
                    @Override
                    public void onResponse(String response) {

                        builder.setTitle("Server Response");
                        builder.setMessage("Response :"+response);

                        session = new Session(getApplicationContext());
                        int responseInt = Integer.parseInt(response.trim());
                        session.setUserID(responseInt);

                        Intent myIntent = new Intent(LoginActivity.this, navActivity.class);
                        startActivity(myIntent);
                        finish();

尝试检索该 ID 并放入 editText

 @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_my_jars);
        session = new Session(getApplicationContext());
        userID = (EditText) findViewById(R.id.userID);
        builder = new AlertDialog.Builder(MyJars.this);
        userID.setText(session.getID());

我希望能够提取该数据并将其发送到我的服务器,在那里我可以运行我的 PHP 脚本,就像我在其他活动中一样,但这不合作。

4

1 回答 1

0

在这一行:

userID.setText(session.getID());

session.getID()是一个整数,它被解释为一个整数资源 ID,而不是您要设置的字符串文本userID
改成这样:

userID.setText("" + session.getID());

或者

userID.setText(String.valueOf(session.getID()));
于 2019-04-27T17:28:42.923 回答