我目前正在为一个简单的游戏应用程序构建一个登录系统。我要实现的目标如下:当用户登录时,我想显示该用户登录后进入的活动的前5个高分。

我从数据库获得的响应是​​一个JSON编码的字符串,如下所示:

{"success":true,"toplist":
   [{"username":"Tom","score":"4200"},
   {"username":"John","score":"2303"},
   {"username":"Benjamin","score":"700"},
   {"username":"Michael","score":"648"},
   {"username":"Daniel","score":"500"}]
}


从这里,我想“处理”并将前5个信息传递给userAreaActivity,然后在表中显示前5个信息。

到目前为止,这是我为了处理响应所需要的:

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

            final String username = etUsername.getText().toString();
            final String password = etPassword.getText().toString();

            Response.Listener<String> responseListener = new Response.Listener<String>() {
                @Override
                public void onResponse(String response) {

                    try {
                        JSONObject jsonResponse = new JSONObject(response);
                        boolean success = jsonResponse.getBoolean("success");

                        if(success){

                            Intent userAreaIntent = new Intent(LoginActivity.this, UserAreaActivity.class);

                            LoginActivity.this.startActivity(userAreaIntent);

                        }
                        else
                        {
                            AlertDialog.Builder builder = new AlertDialog.Builder(LoginActivity.this);
                            builder.setMessage("Login failed!")
                                    .setNegativeButton("Retry", null)
                                    .create()
                                    .show();
                        }

                    } catch (JSONException e) {
                        e.printStackTrace();
                    }
                }
            };

            LoginRequest loginRequest = new LoginRequest(username, password, responseListener);
            RequestQueue queue = Volley.newRequestQueue(LoginActivity.this);
            queue.add(loginRequest);
        }
    });


如果有什么用,这就是我的UserAreaActivity.Java的样子:

public class UserAreaActivity extends AppCompatActivity {

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

       final TableLayout tlHighscores = (TableLayout) findViewById(R.id.tlHighscores);

       Intent intent = getIntent();

   }
}


如果有人能给我一些有关如何以最方便的方式进行操作的指导,我将非常高兴。

最佳答案

你可以简单地做到这一点

Intent userAreaIntent = new Intent(LoginActivity.this, UserAreaActivity.class);
userAreaIntent.putString("data", jsonResponse.toString());
LoginActivity.this.startActivity(userAreaIntent);


并在UserAreaActivity中

JSONObject jsonObj = new JSONObject(getIntent().getStringExtra("data"));


一旦获得jsonObj,就可以解析它并随时使用它。

07-26 09:35