行爲對以下錯誤會發生的2.3設備上,我的設置適用於4.x的設備的罰款。奇怪的錯誤/用ViewPager和動作條(福爾摩斯)
我有一個ViewPager的一些碎片(它們都是同一個班級)。 每個片段都會膨脹它自己的菜單,因爲菜單項可能因片段不同而不同。
爲了測試目的,我在ActionBar中設置了菜單項(ActionBar顯示在圖片的底部,因爲它是一個拆分的ActionBar)。當輕擊項目時,片段中的TextView應設置爲「單擊」。這在一開始就起作用,但是在稍微彈一下之後,會發生這種情況:
當點擊菜單項時,什麼都不會發生。相反,只要我滑動到下一個片段,下一個片段將其TextView設置爲「單擊」。它看起來像ActionBar和它的菜單與下一個片段相關聯。
繼承人PIC
而且繼承人一些代碼:
我的活動:
public class MyActivity extends SherlockFragmentActivity implements
MyFragment.InvalidateListener {
ViewPager viewPager;
SectionsPagerAdapter pagerAdapter;
public void invalidate() {
ActivityCompat.invalidateOptionsMenu(act);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.empty_viewpager);
getSupportActionBar().setHomeButtonEnabled(true);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
pagerAdapter = new SectionsPagerAdapter(getSupportFragmentManager());
viewPager = (ViewPager) findViewById(R.id.pager);
viewPager.setAdapter(pagerAdapter);
viewPager.setCurrentItem(initialIndex);
}
public class SectionsPagerAdapter extends FragmentPagerAdapter {
public SectionsPagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int position) {
Fragment fragment = new MyFragment();
fragment.setHasOptionsMenu(true);
return fragment;
}
// ...
}
我的片段:
public class MyFragment extends SherlockFragment {
HashSet<ImageView> runningImageTasks = new HashSet<ImageView>();
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.fragment_expose, null);
}
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
inflater.inflate(R.menu.menu_grundstueckexpose, menu);
// ...
}
@Override
public boolean onOptionsItemSelected(MenuItem mitem) {
switch (mitem.getItemId()) {
case android.R.id.home:
getActivity().finish();
return true;
case R.id.myitem:
textView.setText("clicked");
return true;
default:
return super.onOptionsItemSelected(mitem);
}
}
}
有沒有其他人經歷過這樣的事情,或者對這裏的問題有什麼想法?
調用supportInvalidateOptionsMenu代替invalidateOptionsMenu – Greensy