[英]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.