2013-07-06 2 views
0

Наше приложение имеет несколько фрагментов. В одном из них пользователь заполняет несколько полей TextEdit. Когда он закончит, он нажмет кнопку в ActionBar, чтобы сохранить данные. Действие просто вызывает частный метод с именем «saveData», который извлекает все данные из полей и отправляет их на наш сервер.Проблема с Android-фрагментами: getView() возвращает null

У нас есть много трассировок стека от наших пользователей, показывающих, что getView() возвращает null в методе saveData, но только для небольшой части. Для большинства из них нет никаких проблем. Мы не можем воспроизвести проблему, и мы не можем понять, что может ее вызвать. Код очень прост:

View vw = this.getView(); 

EditText et; 

et = (EditText)vw.findViewById(R.id.editEmail); 
String email = et.getText().toString().trim(); 

et = (EditText)vw.findViewById(R.id.editPassword); 
String password = et.getText().toString().trim(); 

Действие добавляется в osResume, смотрите ниже:

public void onResume() { 
    super.onResume(); 

    MainActivity act = (MainActivity)this.getActivity(); 

    act.bar.removeAllActions(); 
    act.bar.addAction(new SaveAction()); 
} 

Есть идеи? Как мы можем его воспроизвести?

+2

нужно больше кода с контекстом для * угадывания * при ответе. Является ли это частью активности фрагмента? Как насчет больше – Blundell

+0

Бланделл, фрагмент был добавлен к активности фрагмента. Существует ActionBar с кнопкой. Кнопка при нажатии вызывает метод, начинающийся с строк выше. Таким образом, фрагмент отображается, когда возникает проблема. –

+0

Возможно, вы вызываете getView до вызова onCreateView? –

ответ

0

Вы можете сообщить из своих журналов, является ли проблема всегда для одних и тех же пользователей/устройств?

Я вижу из кода, который вы указали, что представление находится в том же фрагменте - это действительно так?

ВОЗМОЖНО, что фрагмент, который больше не видит, может уничтожить их вид, чтобы высвободить ресурсы. например

getView() returns null

Если я подозревал, что это может быть так, то я бы попытаться воссоздать проблему на телефон/планшет/эмулятора с ограниченными ресурсами.

Удачи вам!

+0

Спасибо, IanB. Да, представление находится в том же фрагменте. Я не понимаю, как можно уничтожить представление, если пользователь просто нажал кнопку «Действие». Я не могу использовать эмулятор, так как приложение требует услуг Google Play. –

+0

Если это тот же фрагмент, то я не вижу, как мое предложение может быть правильным. – IanB

+0

Мне нужна служба карты, которая поставляется с сервисами Google Play. Я не смог установить его. –

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