1

私は3つのタブを持つActionBarを持ついくつかのアプリを開発しています。そのうちの1つは設定タブです。PreferencesFragment は設定 xml ファイルをロードするので、どうすればPreferenceFragmentTabに追加できますActionBarか??

この写真のように:

これは 3 つのタブを追加するメイン アクティビティです。2 つの単純なフラグメント タブを正常に追加しましたが、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 クラスです (2 番目のタブ)

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 を使用しています。

4

1 に答える 1

0

これを実現するには、v13 サポート ライブラリを使用する必要があります。私が助けてくれることを願っています。

于 2013-12-22T09:51:13.840 に答える