ええ、あなたが求めていることはできます。
一言で言えば:
非表示のタブを表示するように指定しonClickListener
た for で、Button
を呼び出す必要がありますActionBar.addTab
。
新しいの追加Fragment
あなたの を含むレイアウトに応じて、andFragments
を呼び出すことができますが、それ以外の場合は、を動的に追加しているため、 を使用していると想定します。その場合、 new を に追加します。FragmentTransaction.hide
FragmentTransaction.show
Fragment
FragmentPagerAdapter
Fragment
List
リンク
アクションバー- addTab
FragmentTransaction -非表示、表示
また、 Adding Fragments docsも読んでください。
非常に基本的な例を次に示します。
ViewPager のアダプター
public class PagerAdapter extends FragmentPagerAdapter {
/**
* The list of {@link Fragment}s used in the adapter
*/
private final List<Fragment> mFragments = new ArrayList<Fragment>();
/**
* Constructor for <code>PagerAdapter</code>
*
* @param fm The {@link FragmentManager} to use.
*/
public PagerAdapter(FragmentManager fm) {
super(fm);
}
/**
* Adds a new {@link Fragment} to the adapter
*
* @param fragment The new {@link Fragment} to add to the list
*/
public void addFragment(Fragment fragment) {
mFragments.add(fragment);
notifyDataSetChanged();
}
/**
* {@inheritDoc}
*/
@Override
public Fragment getItem(int position) {
return mFragments.get(position);
}
/**
* {@inheritDoc}
*/
@Override
public int getCount() {
return mFragments.size();
}
}
ダミーフラグメント
public static final class DummyFragment extends Fragment implements View.OnClickListener {
/**
* Empty constructor as per the {@link Fragment} docs
*/
public DummyFragment() {
}
/**
* @param color The color to make the root view
* @return A new instance of {@link DummyFragment}
*/
public static DummyFragment getInstance(int color) {
final Bundle bundle = new Bundle();
bundle.putInt("color", color);
final DummyFragment fragment = new DummyFragment();
fragment.setArguments(bundle);
return fragment;
}
/**
* {@inheritDoc}
*/
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
final View rootView = inflater.inflate(R.layout.fragment_main_dummy, container, false);
rootView.setBackgroundColor(getArguments().getInt("color"));
return rootView;
}
/**
* {@inheritDoc}
*/
@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
// This should be your Button
view.setOnClickListener(this);
}
/**
* {@inheritDoc}
*/
@Override
public void onClick(View v) {
// This adds the new tab
((MainActivity) getActivity()).addTab(2, Color.BLUE);
}
}
各フラグメントを追加するために呼び出されます
/**
* Used to add a new {@link Fragment} to {@link ViewPager}'s adapter and
* adds a new {@link Tab} to the {@link ActionBar}.
*
* @param pageTitle The title of the tab
* @param color The background color of the {@link Fragment}
*/
public void addTab(int pageTitle, int color) {
mPagerAdapter.addFragment(DummyFragment.getInstance(color));
mActionBar.addTab(mActionBar.newTab()
.setText("" + pageTitle)
.setTabListener(this));
}