我知道在stackoverflow上已经问过这个问题,(Link To Original Question)
我正在按照那里提供的解决方案,并得到一些错误。 (我只想在那里发表评论,但我认为我没有足够的声誉来评论一个明确的答案) 我原来的问题是一样的,即"我想对长文字进行分页"
在提供的答案中遇到的错误(上面发布的链接) - 1.在告诉PageSplitter类之后,解决方案提供商(mixel)声明了这一点 -
...然后通过使用PageSplitter.getPages()方法,您可以获得原创 文本分割为页面并将其中的每一个放入TextView:
pageView.setAdapter(new TextPagerAdapter(getSupportFragmentManager(), pageSplitter.getPages()));
我认为他的意思是pagesView
。 (我真正担心的是下面的内容,如果我错过了其他内容,请提及它。)
对于类型PageFragment
,方法getObjectStorage()未定义
而Mixel说明了getObjectStorage() -
getObjectStorage()返回存储的singleton SharedObjectStorage 从键映射到对象的弱引用(这在您使用时很有用 想把自定义对象放到Bundle上:
我创建了一个名为SharedObjectStorage的独立类,如Mixel所述,但我仍然收到错误。
PageFragment
public class PageFragment extends Fragment {
private final static String PAGE_TEXT = "PAGE_TEXT";
public static PageFragment newInstance(CharSequence pageText) {
PageFragment frag = new PageFragment();
Bundle args = new Bundle();
args.putLong(PAGE_TEXT, getObjectStorage().putSharedObject(pageText));
frag.setArguments(args);
return frag;
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
CharSequence text = (CharSequence) getObjectStorage().getSharedObject(getArguments().getLong(PAGE_TEXT));
TextView pageView = (TextView) inflater.inflate(R.layout.page, container, false);
pageView.setTextSize(TypedValue.COMPLEX_UNIT_PX, getResources().getDimension(R.dimen.text_size));
pageView.setText(text);
return pageView;
}
}
SharedObjectStorage
public class SharedObjectStorage {
private final Random random = new Random(Calendar.getInstance().getTimeInMillis());
private HashMap<Long, WeakReference<Object>> sharedObjects = new HashMap<Long, WeakReference<Object>>();
public synchronized Long putSharedObject(Object o) {
long key;
do {
key = random.nextLong();
} while (sharedObjects.containsKey(key));
sharedObjects.put(key, new WeakReference<Object>(o));
return key;
}
public synchronized Object getSharedObject(long key) {
if (sharedObjects.containsKey(key)) {
return sharedObjects.get(key).get();
}
return null;
}
}
无论如何都可以解决这个问题吗?
P.S。 - 我没有在这里发布答案,因为它已经在stackoverflow本身上了。但是,如果你仍然问我,我会的。 感谢。