2015-09-30 34 views
0

我在包含数据的类Grillen中的parse.com上有一个对象。parse.com更新数据android

现在我想使它成为这样,如果我点击一个按钮,它将添加到与微调器中选定的名称相同的行,并更新列BetragRechnung。我尝试了下面的代码,但它不起作用。

public void createRechnung(View v) { 
    ParseQuery<ParseObject> query = ParseQuery.getQuery("Grillen") 
    // Retrieve the object by id 
    query.getInBackground(String.valueOf(mNameInput), new GetCallback<ParseObject>() { 
     public void done(ParseObject Grillen, ParseException e) { 
      if (e == null) { 
       Grillen.put("Betrag", mBetragInput); 
       Grillen.put("Rechnung", false); 
       Grillen.saveInBackground(); 
      } 
     } 
    }); 

} 
+0

在saveInBackground添加保存回调并为您在异常或错误回调 – Aakash

+0

你有一些代码对我来说我不明白我该怎么做 –

+0

添加下面为雅 –

回答

0

使用此代码来检查什么错

ParseQuery<ParseObject> query = ParseQuery.getQuery("Grillen"); 

// Retrieve the object by id 
query.getInBackground(String.valueOf(mNameInput), new GetCallback<ParseObject>() { 
    public void done(ParseObject Grillen, ParseException eg) { 
     if (eg == null) { 
      Grillen.put("Betrag", mBetragInput); 
      Grillen.put("Rechnung", false); 
      Grillen.saveInBackground(new SaveCallback() { 
       public void done(ParseException e) { 
        if (e == null) { 
         //success, saved! 
         Log.d("MyApp", "Successfully saved!"); 
        } else { 
         //fail to save! 
         e.printStackTrace(); 
        } 
       } 
      }); 
     }else { 
      //fail to get!! 
      eg.printStackTrace(); 
     } 
    } 
}); 

如果成功保存,那么你的例外是空,如果没有你就知道通过堆栈跟踪原因。我建议运行这段代码,让应用程序的执行流程基于保存是否成功。

阅读方式:getInBackground(String, callback)您必须传递您尝试获取的对象的objectId,而不是名称。确保你通过ObjectID获取,而不是像你现在这样做的名字。的ObjectId看起来像一个随机字符串,并应在数据库中通过解析

网上找找到

而是执行此操作:

ParseQuery<ParseObject> query = ParseQuery.getQuery("Grillen"); 
    query.whereEqualTo("name", String.valueOf(mNameInput)); 

    // Retrieve the object by id 
    query.findInBackground(new FindCallback<ParseObject>() { 
     public void done(List<ParseObject> objects, ParseException eg) { 
      if (eg == null && objects.size() > 0) { 
       ParseObject Grillen = objects.get(0); 
       Grillen.put("Betrag", mBetragInput); 
       Grillen.put("Rechnung", false); 
       Grillen.saveInBackground(new SaveCallback() { 
        public void done(ParseException e) { 
         if (e == null) { 
          //success, saved! 
          Log.d("MyApp", "Successfully saved!"); 
         } else { 
          //fail to save! 
          e.printStackTrace(); 
         } 
        } 
       }); 
      }else { 
       //fail to get!! 
       eg.printStackTrace(); 
      } 
     } 
}); 

注:我不知道列名是“名字'Grillen对象的属性,因此您可能需要将其更改为任何您称之为该对象的名称列的对象。

+0

Android Studio说无法解决方法printStacktrace();我认为它会登录logcat权利。 –

+0

错字,它应该是printStackTrace() –

+0

好吧我纠正了,但如果我测试我的应用程序和klick在我的按钮什么都没有发生int logcat我没有看到一个错误,但我没有看到Succes消息 –

0

好吧,我有得到Spinner为名称工作,但不是EditText

这里是代码的某些部分

public class RechnungActivity extends AppCompatActivity { 


    private EditText mBetragInput; 
    private Spinner mNameInput; 
    private String mName; 
    private String mBetrag; 


    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_rechnung); 
     ParseObject.registerSubclass(Grillen.class); 

     mBetragInput = (EditText) findViewById(R.id.Sonstiges); 
     mNameInput = (Spinner) findViewById(R.id.Name); 
     mName = mNameInput.getSelectedItem().toString(); 
     mBetrag = mBetragInput.getText().toString(); 
    } 

    public void createRechnung(View v) { 
     ParseQuery<ParseObject> query = ParseQuery.getQuery("Grillen"); 
     query.whereEqualTo("name", mName); 
     query.findInBackground(new FindCallback<ParseObject>() { 
      public void done(List<ParseObject> objects, ParseException eg) { 
       if (eg == null && objects.size() > 0) { 
        mBetrag = mBetragInput.getText().toString(); 
        ParseObject Grillen = objects.get(0); 
        Grillen.put("Betrag", mBetrag); 
        Grillen.put("Rechnung", true); 
        Grillen.saveInBackground(new SaveCallback() { 
         public void done(ParseException e) { 
          if (e == null) { 
           //success, saved! 
           Log.d("MyApp", "Successfully saved!"); 
          } else { 
           //fail to save! 
           e.printStackTrace(); 
          } 
         } 
        }); 
       }else { 
        //fail to get!! 
        eg.printStackTrace(); 
       } 
      } 
     }); 
    }