gpt4 book ai didi

android - 如何将 Actionbar 项目与 Viewpager + Fragments 一起使用

转载 作者:塔克拉玛干 更新时间:2023-11-02 09:00:02 24 4
gpt4 key购买 nike

我试图弄清楚如何根据正在加载到我的 viewpager 中的 fragment 来实现 Actionbar 项目。我的代码在下面,我只是想找出使用​​ ABS + ViewPager + Fragments 的最佳实践。

主要 Activity

public class MainActivity extends SherlockFragmentActivity {
private ViewPager mPager;
private TitlePageIndicator mIndicator;
private MainPagerAdapter mAdapter;
private List<Fragment> mFragments;

private static final String FRAGMENT1 = Fragment1.class.getName();
private static final String FRAGMENT2 = Fragment2.class.getName();
private static final String FRAGMENT3 = SupportFragment.class.getName();

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.a_main);

// add fragments
mFragments = new ArrayList<Fragment>();
mFragments.add(Fragment.instantiate(this, FRAGMENT1));
mFragments.add(Fragment.instantiate(this, FRAGMENT2));
mFragments.add(Fragment.instantiate(this, FRAGMENT3));

// adapter
mAdapter = new MainPagerAdapter(getSupportFragmentManager(), mFragments);

// pager
mPager = (ViewPager) findViewById(R.id.view_pager);
mPager.setAdapter(mAdapter);

// indicator
mIndicator = (TitlePageIndicator) findViewById(R.id.title_indicator);
mIndicator.setViewPager(mPager);
}
...

MainPagerAdapter

public class MainPagerAdapter extends FragmentPagerAdapter {
private List<Fragment> mFragments;
private String[] titles = new String[] {"System", "Community", "Support"};
private int mCount = titles.length;

public MainPagerAdapter(FragmentManager fm, List<Fragment> f) {
super(fm);
mFragments = f;
}

@Override
public Fragment getItem(int position) {
return mFragments.get(position);
}

@Override
public int getCount() {
return mCount;
}
@Override
public CharSequence getPageTitle(int position) {
return titles[position];
}

fragment 1

 public class Fragment1 extends SherlockFragment {
WebView web;
static ProgressBar progressBar;

@Override
public View onCreateView(LayoutInflater inf, ViewGroup grp, Bundle icicle) {
View v = inf.inflate(R.layout.activity_main, grp, false);
web = (WebView) v.findViewById(R.id.webView);
progressBar = (ProgressBar) v.findViewById(R.id.progressBar1);
return v;
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
web.setWebViewClient(new SpecialWebView(progressBar));
web.setWebChromeClient(new SpecialWebChromeClient(progressBar));
// Progress Bar - End

WebSettings websettings = web.getSettings();
websettings.setBuiltInZoomControls(false);
web.setBackgroundColor(Color.parseColor("#f2f2f2"));
websettings.setUseWideViewPort(true);
websettings.setJavaScriptEnabled(true);
websettings.setAllowFileAccess(true);
websettings.setDomStorageEnabled(true);
websettings.setLoadWithOverviewMode(true);
websettings.setSavePassword(true);
web.loadUrl("http://www.google.com");
}

在我的 MainActivity 中,我尝试了以下方法,但无法获得正确的代码。

@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater Inflater = getSupportMenuInflater();
Inflater.inflate(R.menu.menu, menu);
return true;

}
@Override
public boolean onOptionsItemSelected(MenuItem Item) {
final int current = ((ViewPager) mFragments).getCurrentItem();
String currentId = current == 0 ? FRAGMENT1: (current == 1 ? FRAGMENT2: FRAGMENT3);
//WebView web = (WebView) findViewById(currentId);
switch (Item.getItemId()) {
case R.id.menu_back:
// web.goBack();
return true;
case R.id.menu_forward:
//web.goForward();
return true;
case R.id.menu_refresh:
//web.reload();
return true;
}
return super.onOptionsItemSelected(Item);
}

最佳答案

Im trying to figure out how to implement Actionbar items based on the Fragment that is being loaded inside my viewpager.

这是自动发生的。只需让 fragment 调用 setHasOptionsMenu(true),然后执行 onCreateOptionsMenu()onOptionsItemSelected()Fragment*PagerAdapter 将安排在页面更改后重新填充操作栏,从上一页中删除操作栏项目并从新当前页面引入操作栏项目。

Here is a sample project演示操作栏项目来来去去,因为只有奇数页(对于基于 1 的索引,用户看到的内容)有操作栏项目。

关于android - 如何将 Actionbar 项目与 Viewpager + Fragments 一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16844288/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com