Java 如何在ViewPager中复制当前文本视图中的文本
我想在ViewPager中复制当前TextView(片段内)中的文本,但它会复制上一个或下一个TextView中的文本。我搜索发现,创建三个页面是因为ViewPager的正常行为:上一页、当前页和下一页。但我找不到如何轻松确定当前的一个 我使用带有FragmentStatePagerAdapter的ViewPager 编辑: 我已经搜索了两天,但在问了我的问题后,我发现了几乎相同的问题: 这是一个比我的提问和解释更好的问题。至少我学会了如何提问和解释 但是“getUserVisibleHint()”答案对我不起作用 …Fragment.javaJava 如何在ViewPager中复制当前文本视图中的文本,java,android,android-fragments,android-viewpager,Java,Android,Android Fragments,Android Viewpager,我想在ViewPager中复制当前TextView(片段内)中的文本,但它会复制上一个或下一个TextView中的文本。我搜索发现,创建三个页面是因为ViewPager的正常行为:上一页、当前页和下一页。但我找不到如何轻松确定当前的一个 我使用带有FragmentStatePagerAdapter的ViewPager 编辑: 我已经搜索了两天,但在问了我的问题后,我发现了几乎相同的问题: 这是一个比我的提问和解释更好的问题。至少我学会了如何提问和解释 但是“getUserVisibleHint
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);
}
});
经过大量的搜索,我不知道有多少尝试和错误,我找到了解决我的问题的办法 使用“getUserVisibleHint()”或“getGroupId()”方法,我无法获取当前textview的文本。 我在onContextItemSelected或onCreateView方法中使用了“text=tvTextView.getText().toString();”,但它不起作用
@Override
public boolean onContextItemSelected(MenuItem item) {
if( ! getUserVisibleHint() )
{
return false;
}
// this is not working
text = tvTextView.getText().toString();
然后,我尝试为fragment创建setText和getText方法,并使用getText方法在onContextItemSelected方法中获取文本。它工作得很好
首先,我为片段添加了两种方法:
public String getText() {
return mText;
}
public void setText(String text) {
mText = text;
}
在onCreateView中,我设置了文本
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup parent,
Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.fragment, parent, false);
tvTextView = (TextView) v.findViewById(R.id.tvTextView);
registerForContextMenu(tvTextView);
String tvText = tvTextView.getText().toString();
// I set the text
setText(tvText);
然后在onContextItemSelected中,我使用getText获取它
@Override
public boolean onContextItemSelected(MenuItem item) {
if( ! getUserVisibleHint() )
{
return false;
}
// I get the text
mCopyText = getText();
“getUserVisibleHint()”或“getGroupId()”方法都是这样工作的。我希望这能帮助其他人