【发布时间】:2017-12-15 02:32:31
【问题描述】:
我想在 ViewPager 中复制当前 TextView(片段内)中的文本,但它复制了上一个或下一个 TextView 中的文本。我搜索发现是因为ViewPager的正常行为创建了三个页面:上一页、当前页和下一页。但是我找不到如何轻松确定当前的?
我将 ViewPager 与 FragmentStatePagerAdapter 一起使用。
编辑: 我已经搜索了两天,但在问了我的问题后,我发现了几乎相同的问题: 这是一个比我更好的提问和解释的问题。至少我学会了如何提问和解释。
Wrong fragment in ViewPager receives onContextItemSelected call
但是“getUserVisibleHint()”答案对我不起作用?
...Fragment.java
onCreateView
.........
tvTextView = (TextView) v.findViewById(R.id.TextView);
tvTextView.setTextSize( TypedValue.COMPLEX_UNIT_PX, boyut);
registerForContextMenu(TextView);
.....
@Override
public void onCreateContextMenu(ContextMenu menu, View view, ContextMenu.ContextMenuInfo menuInfo) {
super.onCreateContextMenu(menu, view, menuInfo);
if (view.getId()== R.id.tvTextView) {
MenuInflater inflater = getActivity().getMenuInflater();
inflater.inflate(R.menu.menu_context, menu);
menu.setHeaderTitle("Copy...");
}
}
@Override
public boolean onContextItemSelected(MenuItem item) {
if( getUserVisibleHint() == false )
{
return false;
}
AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo) item.getMenuInfo();
switch(item.getItemId()) {
case R.id.copy:
copy();
return true;
default:
return true;
}
}
在..FragmentContainer.java中
....
mViewPager = (ViewPager) findViewById(R.id.viewPagerLayout);
FragmentManager fm = getSupportFragmentManager();
mViewPager.setAdapter(new FragmentStatePagerAdapter(fm) {
@Override
public int getCount() {
return myArray.size();
}
@Override
public Fragment getItem(int pos) {
return ...Fragment.newInstance(name, pos, checkedItems, fontsize);
}
});
【问题讨论】:
标签: java android android-fragments android-viewpager