2015-01-15 3 views
0

Я разработал приложение для видеонаблюдения. Я использую настройки для сохранения настроек камер. В настройках я создаю главный экран со списком камер, когда пользователь нажимает на текущий элемент, он открывает подэкран с именем камеры, ip, портом и т. Д. Когда пользователь ввел настройки камеры и нажал кнопку «Назад», чтобы вернуться на главный экран, мне нужно убедитесь, что пользователь ввел все необходимые данные - имя, ip, порт, usr, pwd, и если один из пропущенных параметров, приложение будет показывать тост с предупреждением.Настройки Android - главный экран и подэкран

Вопрос в том, как я могу определить, что пользователь нажал кнопку «Назад»?

В PreferenceFragment, onBackPressed() и OnKeyDown() не работает, к тому же я считаю, что это не правильно использовать эти методы в моем случае ...

http://4pda.ru/forum/dl/post/5659206/Screen-Main.gif - Главный экран

http://4pda.ru/forum/dl/post/5659204/Screen-Sub.gif - Подэкран

Мой код:

public class MyFragments extends PreferenceFragment { 
.... 
@Override 
public void onCreate(Bundle savedInstanceState) { 
root = getPreferenceManager().createPreferenceScreen(getActivity()); 
setPreferenceScreen(createMyPrefenceScreen()); 
} 

private PreferenceScreen createMyPrefenceScreen() { 
for (int i=1; i<=8; i++) { 
PreferenceScreen screen = getPreferenceManager().createPreferenceScreen(getActivity()); 
screen.setKey("screen_name_" + i); 
screen.setTitle("Number " + i); 

ip = new EditTextPreference(getActivity()); 
ip.setKey("ip_" + i); 
ip.setTitle("IP "); 
screen.addPreference(ip); 
ip.setSummary(ip.getText()); 
.... 
root.addPreference(screen); 
} 
return root; 
} 
... 
} 
+0

Почему бы проверить, как пользователь вводит? – Biu

+0

Потому что мне нужна проверка после того, как пользователь ввел имя, ip, порт, user, pwd - полный набор данных. Когда пользователь нажимает кнопку «назад», это означает, что он завершает настройку камеры и возвращается на главный экран. И если какой-то параметр пропущен, приложение показывает сообщение. – apollox

ответ

0

Вы должны реализовать onBackPressed в своей деятельности, не в PreferenceFragment.

После 2-го ответа на данный this question:

private final static String TAG_FRAGMENT = "TAG_FRAGMENT"; 

private void showFragment() { 
    final Myfragment fragment = new MyFragment(); 
    final FragmentTransaction transaction = getSupportFragmentManager().beginTransaction(); 
    transaction.replace(R.id.fragment, fragment, TAG_FRAGMENT); 
    transaction.addToBackStack(null); 
    transaction.commit(); 
} 

@Override 
public void onBackPressed() { 
    final Myfragment fragment = (Myfragment) getSupportFragmentManager().findFragmentByTag(TAG_FRAGMENT); 

    if (fragment.insertedDataIsCorrect()) { // HERE you can check for correct data and allow back pressed or not 
     super.onBackPressed(); 
    } 
} 
+0

Спасибо! Я внедрил ваш код. Проблема в том, что она работает, когда я отжимаю от главного экрана до предыдущего действия. Но это не работает, когда я нажимаю кнопку «Назад» из подэкрана на главный экран ... – apollox

+0

Я не понимаю, что вы имеете в виду ... В любом случае вам, вероятно, придется адаптировать код к вашей ситуации. –

+0

Ok) Предпочтение Субэкран -> (нажата кнопка # 1) -> Основной экран настроек -> (кнопка # 2 назад нажата) -> Предыдущая активность. # 1 - не работает, # 2 - хорошо. Я не знаю почему ( – apollox

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