私は3つのタブを持つActionBarを持ついくつかのアプリを開発しています。そのうちの1つは設定タブです。PreferencesFragment は設定 xml ファイルをロードするので、どうすればPreferenceFragment
Tabに追加できます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 を使用しています。