Так что я до сих пор очень хорошо справлялся, пока мне не нужно сохранять текст на parse.com. Код не будет игнорировать пустые поля EditText, которые, как мне кажется, вызывают ошибку. Я попытался использовать setText (""), поэтому он будет сохранять пустой, но все равно создает ошибку. Кто-нибудь знает, как игнорировать пустые поля EditText?Нужно игнорировать пустой EditText при сохранении на parse.com
Вот мой код ниже:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate (savedInstanceState);
setContentView (R.layout.edit_profile);
psnEditText1 = (EditText) findViewById (R.id.psnEditText);
xboxEditText2 = (EditText) findViewById (R.id.xboxEditText);
lolEditText3 = (EditText) findViewById (R.id.lolEditText);
ParseQuery<ParseObject> query = ParseQuery.getQuery("User");
query.whereEqualTo("username", UserId);
query.findInBackground(new FindCallback<ParseObject>() {
public void done(List<ParseObject> objects, ParseException e) {
if (e == null) {
for(ParseObject thisUser : objects){
//access the data associated with the ParseUser using the get method
//pu.getString("key") or pu.get("key")
//UNAME = thisUser.getUsername();
PlayStationId = thisUser.getString("PlayStation ID");
XboxLiveID = thisUser.getString("Xbox Live ID");
LeagueofLegendsId = thisUser.getString ("League of Legends ID");
oid = thisUser.getObjectId();
}
psnEditText1.setText (PlayStationId);
xboxEditText2.setText(XboxLiveID);
lolEditText3.setText (LeagueofLegendsId);
} else {
Log.d ("query", "Error: " + e.getMessage());
}
}
});
saveButton = (Button) findViewById (R.id.saveButton);
saveButton.setOnClickListener (new View.OnClickListener() {
@Override
public void onClick(View v) {
final ParseUser currentUser = ParseUser.getCurrentUser();
if (currentUser != null) {
final String psnID = psnEditText1.getText().toString();
final String xboxID = xboxEditText2.getText().toString();
final String lolID = lolEditText3.getText().toString();
UserId = currentUser.getObjectId();
ParseQuery<ParseObject> query = ParseQuery.getQuery ("User");
query.whereEqualTo("username", UserId);
// Retrieve the object by id
query.getInBackground (oid, new GetCallback<ParseObject>() {
@Override
public void done(ParseObject UserDataUpdate, ParseException e) {
// if (psnID.isEmpty() || xboxID.isEmpty() ||
//lolID.isEmpty()) {
// psnEditText1.setText ("Not Available", TextView.BufferType.EDITABLE);
// xboxEditText2.setText ("Not Available", TextView.BufferType.EDITABLE);
//lolEditText3.setText ("Not Available", TextView.BufferType.EDITABLE);
// Toast.makeText (EditProfileActivity.this,
//"Be sure all fields are checked", Toast.LENGTH_LONG).show();
// } else {
//Add on extra information to current user then save to parse.com
if (psnID.matches ("")){
psnEditText1.setText ("No information entered");
Toast.makeText (EditProfileActivity.this,
"PlayStation ID is empty", Toast.LENGTH_LONG).show();
} else {
UserDataUpdate.put ("PlayStation ID", psnID);
}
if (xboxID.matches ("")) {
xboxEditText2.setText ("No information entered");
Toast.makeText (EditProfileActivity.this,
"Xbox Live ID is empty",Toast.LENGTH_LONG).show();
} else {
UserDataUpdate.put ("Xbox Live ID", xboxID);
}
if (lolID.matches ("")) {
lolEditText3.setText ("No information entered");
Toast.makeText (EditProfileActivity.this,
"League of Legends ID is empty",Toast.LENGTH_LONG).show();
} else {
UserDataUpdate.put ("League of Legends ID", lolID);
}
UserDataUpdate.saveInBackground (new SaveCallback() {
@Override
public void done(ParseException e) {
Toast.makeText (EditProfileActivity.this, "Saved", Toast.LENGTH_LONG).show();
Intent intent = new Intent (EditProfileActivity.this, MainActivity.class);
startActivity (intent);
}
});
}
});
}
}
});
Вот ошибка, которую выбрасывают: (это произошло после того, как я изменил матчей ("") на равных (""))
01 -02 16: 20: 46.537 31994-31994/com.ionictech.gamerzio E/AndroidRuntime: FATAL EXCEPTION: main java.lang.NullPointerException at com.ionictech.gamerzio.UI.EditProfileActivity $ 2 $ 1.done (EditProfileActivity.java: 141) at com.parse.GetCallback.internalDone (GetCallback.java:43) на com.parse.GetCallback.internalDone (GetCallback.java:29) на com.parse.Parse $ 6 $ 1.run (Parse.java:975) на android.os.Handler.handleCallback (Handler.java:605) на android.os.Handler.dispatchMessage (Handler.java:92) на android.os.Looper.loop (Looper.java:137) на android.app.ActivityThread.main (ActivityThread.java:4424) на java .lang.reflect.Method.invokeNative (собственный метод) в java.lang.reflect.Method.invoke (Method.java:511) at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java: 787) at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:554) at dalvik.system.NativeStart.main (родной метод)
где EditProfileActivity.java:141? в вашем коде? – cbrulak
Это строка UserDataUpdate.put («Xbox Live ID», xboxID); – user3900101
Вы подтвердили, что UserDataUpdate не является нулевой в этой частной функции? потому что это может быть. – cbrulak