【问题标题】:Android Preferences Screen inside Action Bar Tab操作栏选项卡内的 Android 首选项屏幕
【发布时间】:2013-08-21 12:07:48
【问题描述】:

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

如图所示:

这是一个添加三个选项卡的主 Activity,我成功添加了两个简单的片段选项卡,但问题始于 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。

【问题讨论】:

  • 嗨,你解决了吗?

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


【解决方案1】:

您必须使用 v13 支持库来实现这一点。希望我能帮上忙。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-01
    • 1970-01-01
    • 2023-03-25
    • 1970-01-01
    • 2011-07-31
    相关资源
    最近更新 更多