2016-05-04 10 views
1

私は現在、単純なゲームアプリケーション用のログインシステムを構築中です。私が達成しようとしていることは次のとおりです:ユーザがログインすると、ログイン後にユーザが来るアクティビティに上位5つのハイスコアを表示したい。データベースからの応答を処理し、新しいアクティビティに渡す

私がデータベースから取得したレスポンスは、このように見える文字列:

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

ここから私は「ハンドル」とuserAreaActivityにトップ5の情報を渡し、その後、テーブルトップ5を表示したいと思います。

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();  

    } 
} 

は次のようになります。それは任意の使用であれば

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は、次のようになります。ここでは

は、私は、応答を処理するために、これまで持っているものです最も便利な方法でこれをどうやってやるのか、誰かが私にいくつかの指導をしてくれることに感激しました。

答えて

0

あなたは、単にあなたがjsonObjを取得したら、あなたはそれを解析し、とにかくあなたが望むそれを使用することができ、この

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")); 

を行うことができます。

+0

@christianあなたは私の答えを試しましたか? – varunkr

+0

答えをありがとう。私が就寝しようとしていたときに質問を投稿しましたが、それは魅力のように機能します。ありがとうございました! – christian24

0

インテントオブジェクトの目的は、インテントと関連情報を提供することです。単純に行うことができます:

意図インテント=新しいインテント(this、UserAreaActivity.class); intent.putString( "key"、 "value"); startActivity(インテント);

ここで、受け取ったアクティビティでintent.getStringExtra( "key")を実行して値を抽出できます。 JSON文字列全体を渡して、このように情報を取得することができます。

関連する問題