Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/205.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android parse.com调用.save()会导致所有查询停止工作_Android_Database_Android Asynctask_Parse Platform - Fatal编程技术网

Android parse.com调用.save()会导致所有查询停止工作

Android parse.com调用.save()会导致所有查询停止工作,android,database,android-asynctask,parse-platform,Android,Database,Android Asynctask,Parse Platform,我有两个对象,一个属于可以投票的交易对象的建立对象。如果我多次向上/向下投票相同的交易,那么第七次投票时,该查询只是停留在那里,没有做任何事情。应用程序不会崩溃,但也不会保存。如果我进入另一个需要parse.com查询的活动,该查询也将不起作用。这是我的向上投票逻辑(向下投票是相同的)。 假设所有使用的变量都是在onCreate()之前初始化的。 我的问题是否被备份到某个管道中 @Override protected void onCreate(Bundle savedInstanceS

我有两个对象,一个属于可以投票的交易对象的建立对象。如果我多次向上/向下投票相同的交易,那么第七次投票时,该查询只是停留在那里,没有做任何事情。应用程序不会崩溃,但也不会保存。如果我进入另一个需要parse.com查询的活动,该查询也将不起作用。这是我的向上投票逻辑(向下投票是相同的)。 假设所有使用的变量都是在onCreate()之前初始化的。 我的问题是否被备份到某个管道中

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        upVoteButton = (Button) findViewById(R.id.deal_up_vote_button);
        upVoteButton.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View arg0) {
                new UpVoteTask().execute();
            }
        });
    }

    // visually changes buttons if they are selected
    private void setButtons(Boolean queryDb) {

        if (queryDb == true) {
            queryParse();
        }

        // if deal found correctly 
        if (deal != null) {
            // if user found correctly
            if (dealVoteUser != null) {
                if (dealVoteUser.get("vote").toString().equals("0")) {
                    upVoteButton.setPressed(false);
                    downVoteButton.setPressed(true);
                } else if (dealVoteUser.get("vote").toString().equals("1")) {
                    upVoteButton.setPressed(true);
                    downVoteButton.setPressed(false);
                } else if (dealVoteUser.get("vote").toString().equals("2")) {
                    upVoteButton.setPressed(false);
                    downVoteButton.setPressed(false);
                }
            }
        }
    }

    // queries parse and populates vars
    private void queryParse(){
        ParseQuery<ParseObject> queryDeal = ParseQuery.getQuery("Deal");
        queryDeal.whereEqualTo("objectId", deal_id);
        try {
            deal = queryDeal.getFirst();
        } catch (ParseException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

        ParseQuery<ParseObject> queryDealVoteUser = ParseQuery
                .getQuery("deal_vote_users");
        queryDealVoteUser.whereEqualTo("deal", deal).whereEqualTo("user",
                ParseUser.getCurrentUser());
        try {
            dealVoteUser = queryDealVoteUser.getFirst();
        } catch (ParseException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

    // UpVoteTask AsyncTask
    private class UpVoteTask extends AsyncTask<Void, Void, Void> {

        @Override
        protected void onPreExecute() {
            super.onPreExecute();
            // Create a progressdialog
            if(upVoteProgressDialog != null){
                upVoteProgressDialog.dismiss();
                upVoteProgressDialog = null;
            }
            upVoteProgressDialog = new ProgressDialog(DealsDetailsActivity.this);
            // Set progressdialog message
            upVoteProgressDialog.setMessage("Saving...");
            upVoteProgressDialog.setIndeterminate(false);
            // Show progressdialog
            upVoteProgressDialog.show();
        }

        @Override
        protected Void doInBackground(Void... params) {
            queryParse();

            // if deal found correctly
            if (deal != null) {
                    // if user has not voted yet
                    if (dealVoteUser == null) {
                        // create new and assign vote to 1
                        dealVoteUser = new ParseObject("deal_vote_users");
                        dealVoteUser.put("deal", deal);
                        dealVoteUser.put("user", ParseUser.getCurrentUser());
                        dealVoteUser.put("vote", 1);
                        up_votes = deal.getInt("up_votes") + 1;
                        down_votes = deal.getInt("down_votes");
                    // if user already down voted
                    } else if (dealVoteUser.get("vote").toString().equals("0")) {
                        // change vote to 1
                        dealVoteUser.put("vote", 1);
                        up_votes = deal.getInt("up_votes") + 1;
                        down_votes = deal.getInt("down_votes") - 1;
                    // if user already up voted 
                    } else if (dealVoteUser.get("vote").toString().equals("1")) {
                        // already voted up, remove vote
                        dealVoteUser.put("vote", 2);
                        up_votes = deal.getInt("up_votes") - 1;
                        down_votes = deal.getInt("down_votes");
                    // if user already voted but cleared vote
                    } else if (dealVoteUser.get("vote").toString().equals("2")) {
                        // change vote to 1
                        dealVoteUser.put("vote", 1);
                        up_votes = deal.getInt("up_votes") + 1;
                        down_votes = deal.getInt("down_votes");
                    }

                    // calculate overall rating percentage
                    if ((up_votes + down_votes) != 0) {
                        rating = (up_votes / (up_votes + down_votes)) * 100;
                    } else if ((up_votes == 0) && (down_votes == 0)) {
                        rating = 0;
                    } else {
                        rating = 50;
                    }

                    deal.put("rating", rating);
                    deal.put("up_votes", up_votes);

                    try {
                        deal.save();
                    } catch (ParseException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }
                    try {
                        dealVoteUser.save();
                    } catch (ParseException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }
                } else {
                    // deal not found problem
                }

            return null;
        }

        @Override
        protected void onPostExecute(Void result) {
            // visually change buttons without querying db
            setButtons(false);

            //remove progress dialogue
            if(upVoteProgressDialog != null){
                upVoteProgressDialog.dismiss();
                upVoteProgressDialog = null;
            }
        }
    }
@覆盖
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
upVoteButton=(按钮)findViewById(R.id.deal\u up\u vote\u按钮);
setOnClickListener(新的OnClickListener(){
@凌驾
公共void onClick(视图arg0){
新建UpVoteTask().execute();
}
});
}
//如果选择了按钮,则可视地更改按钮
专用无效设置按钮(布尔查询DB){
if(queryDb==true){
queryParse();
}
//如果交易发现正确
if(交易!=null){
//如果用户正确找到
if(dealVoteUser!=null){
if(dealVoteUser.get(“投票”).toString().equals(“0”)){
向上votebutton.setPressed(假);
设置按下按钮(真);
}else if(dealVoteUser.get(“投票”).toString().equals(“1”)){
upVoteButton.setPressed(真);
设置按下按钮(假);
}else if(dealVoteUser.get(“投票”).toString().equals(“2”)){
向上votebutton.setPressed(假);
设置按下按钮(假);
}
}
}
}
//查询解析并填充变量
私有void queryParse(){
ParseQuery queryDeal=ParseQuery.getQuery(“交易”);
queryDeal.WHEREQUALTO(“目标”,交易id);
试一试{
deal=queryDeal.getFirst();
}捕获(解析异常){
//TODO自动生成的捕捉块
e、 printStackTrace();
}
ParseQuery QueryDalvoteUser=ParseQuery
.getQuery(“交易/投票/用户”);
queryDealVoteUser.WHEREQUALTO(“交易”),deal.WHEREQUALTO(“用户”,
ParseUser.getCurrentUser());
试一试{
dealVoteUser=querydelvoteuser.getFirst();
}捕获(解析异常){
//TODO自动生成的捕捉块
e、 printStackTrace();
}
}
//UpVoteTask异步任务
私有类UpVoteTask扩展了异步任务{
@凌驾
受保护的void onPreExecute(){
super.onPreExecute();
//创建一个progressdialog
if(upVoteProgressDialog!=null){
upVoteProgressDialog.disclose();
upVoteProgressDialog=null;
}
upVoteProgressDialog=新建进度对话框(DealsDetailsActivity.this);
//设置进程对话框消息
setMessage(“正在保存…”);
upVoteProgressDialog.setUndeterminate(false);
//显示进度对话框
upVoteProgressDialog.show();
}
@凌驾
受保护的Void doInBackground(Void…参数){
queryParse();
//如果交易发现正确
if(交易!=null){
//如果用户尚未投票
if(dealVoteUser==null){
//新建并将投票权分配给1
dealVoteUser=新的ParseObject(“deal_vote_users”);
交易商。卖出(“成交”,成交);
dealVoteUser.put(“user”,ParseUser.getCurrentUser());
交易商卖出价(“投票”,1);
向上投票=deal.getInt(“向上投票”)+1;
down_voces=deal.getInt(“down_voces”);
//如果用户已经投了反对票
}else if(dealVoteUser.get(“投票”).toString().equals(“0”)){
//将投票改为1票
交易商卖出价(“投票”,1);
向上投票=deal.getInt(“向上投票”)+1;
down_voces=deal.getInt(“down_voces”)-1;
//如果用户已经投票
}else if(dealVoteUser.get(“投票”).toString().equals(“1”)){
//已经投票通过,取消投票
交易商卖出价(“投票”,2);
向上投票=deal.getInt(“向上投票”)-1;
down_voces=deal.getInt(“down_voces”);
//如果用户已投票但未通过投票
}else if(dealVoteUser.get(“投票”).toString().equals(“2”)){
//将投票改为1票
交易商卖出价(“投票”,1);
向上投票=deal.getInt(“向上投票”)+1;
down_voces=deal.getInt(“down_voces”);
}
//计算整体评级百分比
如果((上升票+下降票)!=0){
评级=(上升票/(上升票+下降票))*100;
}如果((上升票==0)和&(下降票==0)){
评级=0;
}否则{
评级=50;
}
交易卖出(“评级”,评级);
交易。提交(“投赞成票”,投反对票);
试一试{
deal.save();
}捕获(解析异常){
//TODO自动生成的捕捉块
e、 printStackTrace();
}
试一试{
交易商