处理来自数据库的响应并将其传递给新活动

时间:2016-05-04 21:37:26

标签: java android json

我目前正在为简单的游戏应用程序构建登录系统。我想要实现的目标如下:当用户登录时,我希望在登录后显示用户访问的活动中的前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();      

   }
}

如果有人能给我一些关于如何以最方便的方式做到这一点的指导,我会很激动。

2 个答案:

答案 0 :(得分:0)

你可以简单地这样做

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,你就可以解析它,无论如何都可以使用它。

答案 1 :(得分:0)

这是Intent对象的用途 - 提供意图以及相关信息。你可以这样做:

Intent intent = new Intent(this,UserAreaActivity.class); intent.putString(“key”,“value”); startActivity(意向);

现在,您可以在接收活动中执行intent.getStringExtra(“key”)来提取值。您可以传递整个JSON字符串并以这种方式检索信息。