[英]How to update multiple users from an administrator user in parse.com for android app
我正在构建一个应用程序,其中有一些用户是管理员。 从这些用户那里,我希望他们能够更新其他用户的信息。 以下是我到目前为止提出的内容,但是无法传递用户信息。 有人可以帮忙吗?
我最麻烦的地方是选择要更新的用户。 上一个活动是一个粘贴对象字符串的列表视图。 我得到它们正确显示在必要的edittext上,但是当我单击“保存”按钮时,它不会更新用户字段。
记住我不想更新currentUser,我想更新其他用户
import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
import com.parse.FindCallback;
import com.parse.GetCallback;
import com.parse.ParseException;
import com.parse.ParseObject;
import com.parse.ParseQuery;
import com.parse.ParseUser;
import java.util.List;
public class FullUserInfoActivity extends Activity {
String objectId;
protected EditText mName_FullUm;
protected EditText mLname_FullUm;
protected EditText mEmail_FullUm;
protected TextView mHashid_FullUm;
protected Button mPassword_FullUm;
protected Button mUpdateUserFum;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_full_user_info);
//initialize
mName_FullUm = (EditText) findViewById(R.id.nameFum);
mLname_FullUm = (EditText) findViewById(R.id.lnamefullUm);
mEmail_FullUm = (EditText) findViewById(R.id.emailFum);
mHashid_FullUm = (TextView) findViewById(R.id.hashIdFum);
mPassword_FullUm = (Button) findViewById(R.id.forgotPasswordBtn);
mUpdateUserFum = (Button) findViewById(R.id.updateUserFumButton);
//get the Intent
Intent intent = getIntent();
objectId = intent.getStringExtra("objectId");
final ParseQuery query = ParseUser.getQuery();
query.getInBackground(objectId, new GetCallback<ParseObject>() {
@Override
public void done(ParseObject parseObject, ParseException e) {
if (e == null) {
//Success we have Report
String hashid = parseObject.getString("username").toString();
String name = parseObject.getString("name").toString();
String lname = parseObject.getString("lastname").toString();
String email = parseObject.getString("email").toString();
mHashid_FullUm.setText(hashid);
mName_FullUm.setText(name);
mLname_FullUm.setText(lname);
mEmail_FullUm.setText(email);
} else {
//Something Happened
//sorry there was a problem
AlertDialog.Builder builder = new AlertDialog.Builder(FullUserInfoActivity.this);
builder.setMessage(e.getMessage());
builder.setTitle(R.string.error_login_title);
builder.setPositiveButton(R.string.error_confirmation, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
//close the dialog
dialog.dismiss();
}
});
AlertDialog dialog = builder.create();
dialog.show();
}
}
});
addListenerOnButton();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_full_user_info, 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();
//noinspection SimplifiableIfStatement
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
public void addListenerOnButton() {
mUpdateUserFum.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
ParseQuery<ParseUser> query = ParseUser.getQuery();
query.whereEqualTo("objectId",objectId);
query.findInBackground(new FindCallback<ParseUser>() {
public void done(List<ParseUser> userUpdate, ParseException e) {
if (e == null) {
// Now let's update it with some new data.
// will get sent to the Parse Cloud. playerName hasn't changed.
userUpdate.set("lastname", mLname_FullUm);
userUpdate.set("name", mName_FullUm);
userUpdate.set("email", mEmail_FullUm);
Toast.makeText(FullUserInfoActivity.this, R.string.report_save_confirmation, Toast.LENGTH_LONG).show();
userUpdate.saveInBackground();
} else {
//sorry there was a problem
AlertDialog.Builder builder = new AlertDialog.Builder(FullUserInfoActivity.this);
builder.setMessage(e.getMessage());
builder.setTitle(R.string.error_login_title);
builder.setPositiveButton(R.string.error_confirmation, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
//close the dialog
dialog.dismiss();
}
});
AlertDialog dialog = builder.create();
dialog.show();
}
}
});
}
});
}
}
更新:我重新编写了代码,但是我需要该领域的帮助。
public void addListenerOnButton() {
mUpdateUserFum.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
ParseQuery<ParseUser> query = ParseUser.getQuery();
//ParseQuery<ParseObject> query = ParseQuery.getQuery("_User");
query.whereEqualTo("objectId", objectId);
// Retrieve the object by id
query.findInBackground(new FindCallback<ParseUser>() {
public void done(List<ParseUser> objects, ParseException e) {
if (e == null) {
// Now let's update it with some new data. In this case, only cheatMode and score
// will get sent to the Parse Cloud. playerName hasn't changed.
Toast.makeText(FullUserInfoActivity.this, objectId, Toast.LENGTH_LONG).show();
} else {
//sorry there was a problem
AlertDialog.Builder builder = new AlertDialog.Builder(FullUserInfoActivity.this);
builder.setMessage(e.getMessage());
builder.setTitle(R.string.error_login_title);
builder.setPositiveButton(R.string.error_confirmation, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
//close the dialog
dialog.dismiss();
}
});
AlertDialog dialog = builder.create();
dialog.show();
}
}
});
}
});
}
@ariefbayu:如何将此概念应用于parseUser对象。 我知道如何分配给普通对象,但是据我了解,用户是特殊对象。 我知道parse.com建议
ParseQuery<ParseUser> query = ParseUser.getQuery();
query.whereEqualTo("gender", "female");
query.findInBackground(new FindCallback<ParseUser>() {
public void done(List<ParseUser> objects, ParseException e) {
if (e == null) {
// The query was successful.
} else {
// Something went wrong.
}
}
});
但我不明白如何选择其他用户并分配新值。
处理一行结果(或预期只有一行数据)时,有一种更好的方法,即使用ParseQuery.getFirstInBackground
。 这是我如何做的一个例子:
ParseQuery<ChatMessage> query = ParseQuery.getQuery(ChatMessage.class);
query.whereEqualTo("messageId", msgId);
query.getFirstInBackground(new GetCallback<ChatMessage>() {
@Override
public void done(ChatMessage chatMessage, ParseException e) {
if(e == null){
chatMessage.setHasBeenDelivered(true);
chatMessage.saveInBackground();
} else{
Log.e("AppLog", e.getMessage());
}
}
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.