如何将长文本分页到Android中的页面?

时间:2014-07-18 12:28:12

标签: android pagination textview

我知道在stackoverflow上已经问过这个问题,(Link To Original Question

我正在按照那里提供的解决方案,并得到一些错误。 (我只想在那里发表评论,但我认为我没有足够的声誉来评论一个明确的答案) 我原来的问题是一样的,即"我想对长文字进行分页"

在提供的答案中遇到的错误(上面发布的链接) - 1.在告诉PageSplitter类之后,解决方案提供商(mixel)声明了这一点 -

  

...然后通过使用PageSplitter.getPages()方法,您可以获得原创   文本分割为页面并将其中的每一个放入TextView:

pageView.setAdapter(new TextPagerAdapter(getSupportFragmentManager(), pageSplitter.getPages()));

我认为他的意思是pagesView。 (我真正担心的是下面的内容,如果我错过了其他内容,请提及它。)

  1. 这是我面临的真正问题 - 在PageFragment类中,我收到此错误 -
  2.   

    对于类型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本身上了。但是,如果你仍然问我,我会的。 感谢。

0 个答案:

没有答案