操作栏选项卡内的Android首选项屏幕

时间:2013-08-21 12:07:49

标签: tabs android-fragments android-actionbar android-preferences

我正在使用带有三个选项卡的ActionBar开发一些应用程序,其中一个是设置选项卡。 PreferencesFragment加载我的首选项xml文件,那么如何将PreferenceFragment添加到ActionBar Tab?

就像这个皮毛:

这是一个添加三个标签的主要活动,我已经成功添加了两个简单的片段标签但是RreferenceFragment开始出现问题

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    final ActionBar actionBar = this.getSupportActionBar();
    actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);

    Tab settings = actionBar.newTab();
    settings.setText("Settings");
    settings.setTabListener(new SettingsFragment());
    actionBar.addTab(settings);

    Tab control = actionBar.newTab();
    control.setText("Controller");
    control.setTabListener(new ControlFragment());
    actionBar.addTab(control);

    Tab information = actionBar.newTab();
    information.setText("information");
    information.setTabListener(new InformationFragment());
    actionBar.addTab(information);

}

例如,这是一个ControlFragment类(第二个标签页)

public class ControlFragment extends Fragment implements ActionBar.TabListener {

private Fragment fragment;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    getActivity().setContentView(R.layout.control_fragment);
}

@Override
public void onTabReselected(Tab tab, FragmentTransaction frgTransaction) {
    //TODO
}

@Override
public void onTabSelected(Tab tab, FragmentTransaction frgTransaction) {
    fragment = new ControlFragment();
    frgTransaction.add(android.R.id.content, fragment);
    frgTransaction.attach(fragment);
}

@Override
public void onTabUnselected(Tab tab, FragmentTransaction frgTransaction) {
    frgTransaction.remove(fragment);
} 

}

这是一个设置主要问题的SettingsFragment类

public class SettingsFragment extends PreferenceFragment implements ActionBar.TabListener {

private Activity act;
private Context context;
private Fragment fragment;

public SettingsFragment() {

}

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    addPreferencesFromResource(R.xml.preference_settings);
}

@Override
public void onTabReselected(Tab arg0, FragmentTransaction arg1) {
    // TODO Auto-generated method stub

}

@Override
public void onTabSelected(Tab arg0, FragmentTransaction arg1) {
    // TODO Auto-generated method stub
    fragment = new SettingsFragment();
    arg1.add(android.R.id.content, fragment);
    arg1.attach(fragment);
}

@Override
public void onTabUnselected(Tab arg0, FragmentTransaction arg1) {
    // TODO Auto-generated method stub

}

}

应用程序崩溃,因为它需要处理PreferenceFragment

我如何补充它?我知道TabHost,但我使用Action Bar。

1 个答案:

答案 0 :(得分:0)

您必须使用v13支持库才能实现此目的。希望我帮忙。