如何分页长文本到Android中的网页?(How to paginate long text int

2019-10-20 11:55发布

我知道这个问题已经被问过计算器,( 链接到原来的问题 )

我只要解决以下,并得到了一些错误。 (我想有只在评论问,但我认为没有足够的信誉来问一个明显的答案评论) 我原来的问题是相同的,即“我要分页长文本”

在所提供的答案遇到(以上链接贴)错误 - 1.讲述PageSplitter下课后,解决方案提供商(Mixel公司)指出这一点 -

...然后使用PageSplitter.getPages()方法,你可以得到分裂到页原文,并把他们每个人到TextView的:

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

我想,在这里他指的是pagesView 。 (我真正关心的是下面写的,提到这一点,以防万一我错过了什么东西。)

  1. 这是我面临的真正的问题-在PageFragment类,我得到这个错误-

该方法getObjectStorage()是未定义的类型PageFragment

而Mixel公司称大约getObjectStorage() -

getObjectStorage()返回,从按键到弱引用对象(当你想要把自定义对象捆绑,这是有益的)存储地图单SharedObjectStorage:

我已经创建了一个名为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;
    }
}

反正是有解决此问题?

PS - 我没有在这里发布的答案,因为它已经在计算器本身。 但是,如果你还问我,我会的。 谢谢。

文章来源: How to paginate long text into pages in Android?