2014-12-06 68 views
1

不知道我要去哪里错了。我有一个用户表(Parse.com后端)和一个允许用户更新字段的表单,以了解他们的用户详细信息。当我按下更新按钮时,意图起作用,但是没有任何细节被更新。使用Parse,Android更新用户详细信息

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

    ParseUser currentUser = ParseUser.getCurrentUser(); 
    userId = currentUser.getObjectId(); 
    mUsername = currentUser.getUsername(); 
    mEmail = currentUser.getEmail(); 
    mWebsite = currentUser.get("website").toString(); 
    mLocation = currentUser.get("location").toString(); 

    mUsernameField = (EditText)findViewById(R.id.usernameField); 
    mLocationField = (EditText)findViewById(R.id.locationField); 
    mEmailField = (EditText)findViewById(R.id.emailField); 
    mWebsiteField = (EditText)findViewById(R.id.websiteField); 

    mUsernameField.setText(mUsername); 
    mLocationField.setText(mLocation); 
    mEmailField.setText(mEmail); 
    mWebsiteField.setText(mWebsite); 

    mButton = (Button)findViewById(R.id.updateButton); 


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

        if (username.isEmpty() || email.isEmpty() || 
          location.isEmpty()){ 
         AlertDialog.Builder builder = new AlertDialog.Builder(ManageAccountActivity.this); 
         builder.setMessage(R.string.sign_up_error_message) 
           .setTitle(R.string.sign_up_error_title) 
           .setPositiveButton(android.R.string.ok, null); 
         AlertDialog dialog = builder.create(); 
         dialog.show(); 

        } 

        else { 


         setProgressBarIndeterminateVisibility(true); 

         //Update user 
         ParseUser user = ParseUser.getCurrentUser(); 
         user.setUsername(mUsername); 
         user.setEmail(mEmail); 
         user.put("location", mLocation); 
         user.put("website", mWebsite); 

         user.saveInBackground(new SaveCallback() { 

          @Override 
          public void done(ParseException e) { 
           setProgressBarIndeterminateVisibility(false); 

           if (e == null) { 
            //Success! 
            Intent intent = new Intent(ManageAccountActivity.this, MainActivity.class); 

            startActivity(intent); 

           } else { 
            AlertDialog.Builder builder = new AlertDialog.Builder(ManageAccountActivity.this); 
            builder.setMessage(e.getMessage()) 
              .setTitle(R.string.sign_up_error_title) 
              .setPositiveButton(android.R.string.ok, null); 
            AlertDialog dialog = builder.create(); 
            dialog.show(); 
           } 
          } 
         }); 

        } 

       } 
      }); 
     } 






@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    // Inflate the menu; this adds items to the action bar if it is present. 
    getMenuInflater().inflate(R.menu.manage_account, menu); 
    return true; 
} 

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    // Handle action bar item clicks here. The action bar will 
    // automatically handle clicks on the Home/Up button, so long 
    // as you specify a parent activity in AndroidManifest.xml. 
    int id = item.getItemId(); 
    if (id == R.id.action_settings) { 
     return true; 
    } 
    return super.onOptionsItemSelected(item); 
} 

}

回答

1

貌似你不从输入字段读取新值。

你需要从场得到他们,之前更新解析用户

mUsername = mUsernameField.getText().toString(); 
mEmail = mEmailField.getText().toString(): 
mLocation = mLocationField.getText().toString(): 
mWebsite = mWebsiteField.getText().toString(); 
+0

这需要从TextView的切换类型为String。我在另一个类中使用了类似的东西(注册),它的工作原理与ParseUser位有关? – user1544797 2014-12-06 23:17:07