簡體   English   中英

如何從parse.com中用於Android應用程序的管理員用戶更新多個用戶

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM