2017-01-25 28 views
0

こんにちは私はEditTextからデータを取得してJSONオブジェクトとして投稿しようとしていますが、データのない空のオブジェクトを返します オブジェクトはキーだけで返され、入力された値は画面 注記に示すようのEditText:私はトーストにJSONオブジェクトをretriveする必要がJava Android投稿JSONデータ

public class MainActivity extends AppCompatActivity { 

    EditText userName; 
    EditText password; 
    EditText email; 
    EditText phone; 
    Button submit; 

    Person person; 

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

     person = new Person(); 

     userName = (EditText) findViewById(R.id.user_name); 
     password = (EditText) findViewById(R.id.password); 
     email = (EditText) findViewById(R.id.email); 
     phone = (EditText) findViewById(R.id.phone); 
     submit = (Button) findViewById(R.id.submit); 

     person.setUserName(userName.getText().toString()); 

     person.setPassword(password.getText().toString()); 

     person.setEmail(email.getText().toString()); 

     person.setPhone(phone.getText().toString()); 
     submit.setOnClickListener(new View.OnClickListener() {@Override 
      public void onClick(View v) { 
       new JsonDataConverter().execute(person); 
      } 
     }); 
    } 
    private class JsonDataConverter extends AsyncTask < Person, 
    Void, 
    String > { 

     @Override 
     protected String doInBackground(Person...params) { 

      try { 
       JSONObject jsonObject = new JSONObject(); 
       jsonObject.put("userName", person.getUserName()); 
       jsonObject.put("password", person.getPassword()); 
       jsonObject.put("email", person.getEmail()); 
       jsonObject.put("phone", person.getPhone()); 
       return jsonObject.toString(); 
      } catch(JSONException ex) { 
       ex.printStackTrace(); 
      } 
      return null; 
     } 

     @Override 
     protected void onPostExecute(String s) { 
      super.onPostExecute(s); 
      try { 
       JSONObject jsonUser = new JSONObject(s); 
       jsonUser.get("userName"); 
       jsonUser.get("password"); 
       jsonUser.get("email"); 
       jsonUser.get("phone"); 

       Toast.makeText(MainActivity.this, jsonUser.toString(), Toast.LENGTH_SHORT).show(); 

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

     } 
    } 
} 

Person.java

public class Person implements Serializable { 
    String userName; 
    String password; 
    String email; 
    String phone; 

    public Person() {} 

    public String getUserName() { 
     return userName; 
    } 

    public void setUserName(String userName) { 
     this.userName = userName; 
    } 

    public String getPassword() { 
     return password; 
    } 

    public void setPassword(String password) { 
     this.password = password; 
    } 

    public String getEmail() { 
     return email; 
    } 

    public void setEmail(String email) { 
     this.email = email; 
    } 

    public String getPhone() { 
     return phone; 
    } 

    public void setPhone(String phone) { 
     this.phone = phone; 
    } 

} 

Screen picture

+0

何のポストコードがない、あなただけの、JSONを作成追加します値を 'doInBackground'と' onPostExecute'に入れて、同じjsonの値をどこにも保存せずに取り出すだけです。 –

+0

Pavneet Singh - 私はJsonObjectを知っているまでToastに表示する必要がありますが、それは – user7470376

答えて

0

あなたは間違った場所でセッターを使用していました。次のように

protected void onCreate(Bundle savedInstanceState) { 
super.onCreate(savedInstanceState); 
setContentView(R.layout.activity_main); 


person = new Person(); 

userName = (EditText) findViewById(R.id.user_name); 
password = (EditText) findViewById(R.id.password); 
email = (EditText) findViewById(R.id.email); 
phone = (EditText) findViewById(R.id.phone); 
submit = (Button) findViewById(R.id.submit); 

submit.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     person.setUserName(userName.getText().toString()); 

     person.setPassword(password.getText().toString()); 

     person.setEmail(email.getText().toString()); 

     person.setPhone(phone.getText().toString()); 

     new JsonDataConverter().execute(person); 
    } 
}); 
} 

編集.. ClickListenerでそれを使用してください: あなたはPARAMない上位クラスのメンバーの一人を使用している[0]

+0

です。クラスレベルから人を削除し、アクセスするにはparamを使用する必要があります。 – user388229