我目前正在为一个简单的游戏应用程序构建一个登录系统。我要实现的目标如下:当用户登录时,我想显示该用户登录后进入的活动的前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,就可以解析它并随时使用它。