Android 从解析表中删除一行

Android 从解析表中删除一行,android,parse-platform,Android,Parse Platform,我有一张叫做“最喜欢的标签”的桌子。它有字段-Tag,User(Pointer-respectiv User objectid)。用户可以在其中存储标记,并将用户objectid作为指针存储在用户字段中,用户从收藏夹中删除标记 用于存储/更新:工作正常 ParseObject favtagobject = new ParseObject("Favourite"); favtagobject.put("Tag", "#" + keyword);

我有一张叫做“最喜欢的标签”的桌子。它有字段-Tag,User(Pointer-respectiv User objectid)。用户可以在其中存储标记,并将用户objectid作为指针存储在用户字段中,用户从收藏夹中删除标记

用于存储/更新:工作正常

           ParseObject favtagobject = new ParseObject("Favourite");
            favtagobject.put("Tag", "#" + keyword);
                favtagobject.put("User", ParseUser.getCurrentUser());
                favtagobject.saveInBackground();
用于从表中删除/删除标记:下面的代码不起作用

           ParseObject favtagobject = new ParseObject("Favourite");
             favtagobject.put("Tag", "#" + keyword);
                favtagobject.put("User", ParseUser.getCurrentUser());
                favtagobject.deleteInBackground(new DeleteCallback() {

                    @Override
                    public void done(com.parse.ParseException arg0) {
                        // TODO Auto-generated method stub
                        System.out.println("deleted the tag succesfully");
                    }
                });

我想从表中删除一行,因为我知道要删除哪一行。请帮帮我。

基本上,当您使用“新建ParseObject(“收藏夹”);”时它将构造一个新的ParseObject。在对该parseObject调用.save()的任何变量之前,该parseObject不存在于数据库中。所以当你这么做的时候

    ParseObject favtagobject = new ParseObject("Favourite");
         favtagobject.put("Tag", "#" + keyword);
            favtagobject.put("User", ParseUser.getCurrentUser());
            favtagobject.deleteInBackground(new DeleteCallback() {

                @Override
                public void done(com.parse.ParseException arg0) {
                    // TODO Auto-generated method stub
                    System.out.println("deleted the tag succesfully");
                }
            });
您所做的只是创建一个数据库中不存在的新对象,然后尝试删除它?你要找的是这个

    ParseQuery<ParseObject> query = ParseQuery.getQuery("Favourite");
    query.whereEqualTo("Tag", "#" + keyword);
    query.whereEqualTo("User", ParseUser.getCurrentUser());
    query.getFirstInBackground(new FindCallBack() {

            @Override
            public void done(ParseObject object, com.parse.ParseException arg0) {
               // TODO Auto-generated method stub
                   object.delete();
                   object.saveInBackground();
            }
        }););
ParseQuery=ParseQuery.getQuery(“收藏夹”);
query.whereEqualTo(“标记”,“#”+关键字);
query.whereEqualTo(“User”,ParseUser.getCurrentUser());
query.getFirstInBackground(新的FindCallBack(){
@凌驾
公共无效完成(ParseObject对象,com.parse.ParseException arg0){
//TODO自动生成的方法存根
object.delete();
object.saveInBackground();
}
}););

这将首先从数据库中获取对象,然后从表中删除该行并保存对该对象所做的更改

感谢巴特·德·鲁伊特。这也是我的工作

ParseQuery<ParseObject> query = ParseQuery.getQuery("Objects");
    query.getInBackground(objectID, new GetCallback<ParseObject>() {
        @Override
        public void done(ParseObject object, ParseException e) {

            try {
                object.delete();
                object.saveInBackground();

                Intent dashboard = new Intent(getApplicationContext(),DashboardActivity.class);
                Toast.makeText(getApplicationContext(), "Deleted Successuly.", Toast.LENGTH_SHORT).show();
                startActivity(dashboard);

            } catch (ParseException e1) {
                e1.printStackTrace();
            }


        }
    });
ParseQuery query=ParseQuery.getQuery(“对象”);
getInBackground(objectID,newgetcallback(){
@凌驾
公共无效完成(ParseObject对象,parsee异常){
试一试{
object.delete();
object.saveInBackground();
意图仪表板=新意图(getApplicationContext(),DashboardActivity.class);
Toast.makeText(getApplicationContext(),“已成功删除”,Toast.LENGTH_SHORT).show();
startActivity(仪表板);
}捕获(解析异常e1){
e1.printStackTrace();
}
}
});

您是否尝试先从数据库中检索对象?然后对检索到的parseObject调用.deleteInBackground?你的意思是我必须运行一个查询,然后执行删除操作??哈哈。我在山顶上的愚蠢!谢谢你!要删除整行,请使用delete()方法。