2017-08-25 3 views
0

J'utilise parse comme baas, j'utilisais le code ci-dessous pour supprimer des objets .Mais demain j'ai appris que ce morceau de code ne fonctionnait pas.Les objets d'analyse ne sont pas en train de supprimer

@Override 
     public void onClick(View view) { 
      new AlertDialog.Builder(context).setIcon(R.drawable.main).setTitle("Delete this product ?") 
        .setMessage("Are you sure you want to Delete this product ?").setPositiveButton("Yes", new DialogInterface.OnClickListener() { 
       @Override 
       public void onClick(DialogInterface dialogInterface, int i) { 



        ParseQuery<ParseObject> query = ParseQuery.getQuery("VendorInv"); 
        query.whereEqualTo("objectId", details.getObjectId()); 
        query.getFirstInBackground(new GetCallback<ParseObject>() { 
         @Override 
         public void done(ParseObject object, ParseException e) { 
          try { 
           object.delete();  // fixed part 
           object.saveInBackground(new SaveCallback() { // fixed part 
            @Override 
            public void done(ParseException e) { 

             if (e == null) { 
              vendorDetailsList.remove(position); 
              notifyItemRemoved(position); 
              notifyItemRangeChanged(position, vendorDetailsList.size()); 
              count.setText(String.valueOf(vendorDetailsList.size()) + "/" + totalNo + " items are Online"); 
              Toast.makeText(context, "Deleted", Toast.LENGTH_SHORT).show(); 
             } 
            } 
           }); 
          } catch (ParseException e1) { 
           Log.i("sand", e1.toString()); 
          } 
         } 
        }); 
       } 

      }).setNegativeButton("No", null).show(); 


     } 

    }); 

} 

Puis en tant que contributeur de Parse android dit que je fixe cette partie du code ci-dessous

holder.cross.setOnClickListener(new View.OnClickListener() { 

      @Override 
      public void onClick(View view) { 
       new AlertDialog.Builder(context).setIcon(R.drawable.main).setTitle("Delete this product ?") 
         .setMessage("Are you sure you want to Delete this product ?").setPositiveButton("Yes", new DialogInterface.OnClickListener() { 
        @Override 
        public void onClick(DialogInterface dialogInterface, int i) { 


         ParseQuery<ParseObject> query = ParseQuery.getQuery("VendorInv"); 
         query.whereEqualTo("objectId", vendorDetailsList.get(position).getObjectId()); 
         query.getFirstInBackground(new GetCallback<ParseObject>() { 
          @Override 
          public void done(ParseObject object, ParseException e) { 
/* this part is changed */        object.deleteInBackground(new DeleteCallback() { 
            @Override 
            public void done(ParseException e) { 
             if (e == null) { 
              Log.i("sand", vendorDetailsList.get(position).getObjectId()); 
              vendorDetailsList.remove(position); 
              notifyItemRemoved(position); 
              notifyItemRangeChanged(position, vendorDetailsList.size()); 
              count.setText(String.valueOf(vendorDetailsList.size()) + "/" + totalNo + " items are Online"); 
              Toast.makeText(context, "Deleted", Toast.LENGTH_SHORT).show(); 
             } else { 
              Toast.makeText(context, "Not Deleted please check your network connection", Toast.LENGTH_SHORT).show(); 
             } 
            } 
           }); 

          } 
         }); 


        } 

       }).setNegativeButton("No", null).show(); 


      } 

     }); 

Toast est l'impression supprimé mais toujours objet n'est pas supprimé dans la base de données. Je ne sais pas où je vais mal, mais cela ne me aide à la suppression d'un objet Toute aide serait grandement appréciée

+0

Parse.com est toujours en cours d'exécution. Comme je lis cet article http://blog.parse.com/announcements/a-parse-shutdown-reminder/ il y a un certain temps que ça va s'arrêter. –

+0

maintenant son open source et j'utilise heroku comme backend. Donc, oui, il fonctionne encore –

Répondre

0

Config votre classe VendorInv sur le serveur pour être « Lire public et écriture activé » et de l'utilisation code suivant:

ParseQuery<ParseObject> query = ParseQuery.getQuery("VendorInv"); 
    query.getInBackground(vendorDetailsList.get(position).getObjectId(), new GetCallback<ParseObject>() { 
     @Override 
     public void done(ParseObject object, ParseException e) { 
      if (object != null) { 
       object.deleteInBackground(new DeleteCallback() { 
        @Override 
        public void done(ParseException e) { 
         if (e == null) { 
          Log.i("sand", vendorDetailsList.get(position).getObjectId()); 
          vendorDetailsList.remove(position); 
          notifyItemRemoved(position); 
          notifyItemRangeChanged(position, vendorDetailsList.size()); 
          count.setText(String.valueOf(vendorDetailsList.size()) + "/" + totalNo + " items are Online"); 
          Toast.makeText(context, "Deleted", Toast.LENGTH_SHORT).show(); 
         } else { 
          Toast.makeText(context, "Not Deleted please check your network connection", Toast.LENGTH_SHORT).show(); 
         } 
        } 
       }); 
      } 
     } 
    }); 
+0

J'ai utilisé cela, et il est également l'impression d'un toast "Supprimé". Mais ce n'est pas supprimer dans la base de données.Tout suppositions peut-il être à cause de ACL mais je l'ai mis à Public pour maintenant –

+0

Ensuite, je suppose il ya un problème sur le côté serveur – Sergey

+0

donc désolé mon mauvais il y a une erreur, '2017-08-25T07: 13: 22.134Z - Permission refusée pour l'action supprimer sur la classe VendorInv. 2017-08-25T07: 13: 22.128Z - Erreur lors de la génération de la réponse. ParseError { code: 119, message: 'Autorisation refusée pour action delete sur la classe VendorInv.' } ' –