【发布时间】:2014-08-03 18:53:43
【问题描述】:
我正在尝试了解 Android 片段和导航,但有些事情我不知道该怎么做。我创建了一个应用程序,其 MainActivity 包含一个 viewPager :
public class MainActivity extends FragmentActivity implements TabListener
{
private ViewPager viewPager;
private TabsPagerAdapter mAdapter;
private ActionBar actionBar;
private String[] tabNames = {"Tab 1", "Tab 2", "Tab 3"};
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
viewPager = (ViewPager) findViewById(R.id.pager);
actionBar = getActionBar();
mAdapter = new TabsPagerAdapter(getSupportFragmentManager());
viewPager.setAdapter(mAdapter);
actionBar.setHomeButtonEnabled(false);
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
for(int i = 0 ; i < tabNames.length ; i++)
actionBar.addTab(actionBar.newTab().setText(tabNames[i]).setTabListener(this));
}
@Override
public void onTabReselected(Tab tab, FragmentTransaction ft) {}
@Override
public void onTabSelected(Tab tab, FragmentTransaction ft)
{
viewPager.setCurrentItem(tab.getPosition());
}
@Override
public void onTabUnselected(Tab tab, FragmentTransaction ft) {}
}
这里是TabsPagerAdapter:
public class TabsPagerAdapter extends FragmentPagerAdapter
{
public TabsPagerAdapter(FragmentManager fm)
{
super(fm);
}
@Override
public Fragment getItem(int index)
{
if(index == 0) return new FirstFragment();
else if(index == 1) return new SecondFragment();
else return new ThirdFragment();
}
@Override
public int getCount()
{
return 3;
}
}
我的FirstFragment 是一个列表,因此它扩展了ListFragment。这是它的样子:
现在,如果我单击一个项目,我想转到另一个视图。在我以前在没有操作栏和标签的应用程序中这样做之前:
Intent i = new Intent(this.getActivity().getApplicationContext(), MyNewActivity.class);
startActivity(i);
但是现在当我这样做时,它不再在屏幕顶部显示操作栏,而且我还想在此选项卡上保持导航状态,如果我转到另一个选项卡然后返回。我该怎么办?
感谢您的帮助。
【问题讨论】:
-
操作栏标签在“L”开发者预览版中已被弃用,并且在其正式发布(Android 5.0 或其他任何名称)后仍应被弃用。
标签: android android-intent android-fragments tabs