Android首选项 - 主屏幕和防晒霜

时间:2015-01-15 10:12:27

标签: android android-preferences

我开发了一款视频监控应用。 我使用首选项来保持相机设置。 在首选项中,我创建了带有摄像机列表的主屏幕,当用户点击当前项目时,它会打开带有摄像机名称,ip,端口等的子屏幕。 当用户输入相机设置并单击后退按钮返回主屏幕时,我需要检查用户是否输入了所有必要的数据 - 名称,IP,端口,usr,pwd,如果其中一个参数丢失,应用程序将显示警告的吐司。

问题是,如何确定用户点击后退按钮?

在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;
}
...
} 

1 个答案:

答案 0 :(得分:0)

您必须在Activity中实现onBackPressed,而不是在PreferenceFragment中。

在给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();
    }
}
相关问题