2015-05-04 3 views
1

Возможно, я не понимаю тонкости ParseUser, но из того, что я могу сказать, объекты ParseUser наследуют метод .getString. В моей программе я пытаюсь получить строку из поля «screenName» моего объекта ParseUser. Я использовал эту линию:Android: Parse .getString метод возвращает null для поля текущего пользователя

ParseUser currentUser = ParseUser.getCurrentUser(); 

для получения текущего объекта пользователя, и я пытаюсь получить доступ к области ScreenName как таковой:

String screenNameString = (String) currentUser.get("screenName"); 

Это возвращает нуль к screenNameString, и я не Конечно, почему. Я проверил, что currentUser захватил правильный пользовательский объект (я могу видеть правильное имя пользователя и ObjectID).

Цель этого кода - в конечном итоге захватить поле screenName текущего пользователя и записать его в TextView. Вот остальная часть моего кода, если вы обнаружите больше проблем.

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_profile); 

    // grab current user 
    ParseUser currentUser = ParseUser.getCurrentUser(); 

    // TODO implement call backs for each field 
    // TODO this doesn't work :(look up ParseUser methods for grabbing stuff 
    if (currentUser != null) { 
     /* Set user specific views*/ 
     // Set screenName 
     TextView screenNameTextView = (TextView) findViewById(R.id.screenName); 
     String screenNameString = (String) currentUser.get("screenName"); 
     screenNameTextView.setText(screenNameString); 

     // Set bio 
     TextView bioTextView = (TextView) findViewById(R.id.bio); 
     String bioString = (String) currentUser.get("bio"); 
     bioTextView.setText(bioString); 

    } else { 
     // Error log 
     Log.e("ProfileActivity", "could not locate CurrentUser"); 
    } 
} 

Это метод onCreate для деятельности, которая показывает пользователю их профиль в моем приложении. Обратите внимание, что есть также поле «bio», которое я пытаюсь захватить. Это дает мне ту же проблему. Я добавил оба поля в качестве столбцов ParseUser в панель управления данными Parse. Если у кого-нибудь есть какие-либо советы или помощь, я бы очень признателен! Благодаря!

ответ

1

попробуйте позвонить fetchInBackground(), а затем попытайтесь получить эти значения. Также вам не нужно указывать эти значения в String - вы можете использовать метод getString() явно.

+0

Ahh Я вижу, так хорошая стратегия была бы сделать выборку в фоновом режиме, а затем установить текст в обратном вызове с помощью объекта, который он находит? Все еще привыкший к Парсу, но это то, что я думаю. – ThePartyTurtle

+0

да, точно. Дайте мне знать, если это работает –

+0

Работает отлично! Мне придется привыкнуть использовать обратный вызов. Спасибо, Олег! – ThePartyTurtle

Смежные вопросы