这是我面临的真正问题 - 在PageFragment类中,我收到此错误 -
醇>
对于类型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> sharedObjects = new HashMap>();
public synchronized Long putSharedObject(Object o) {
long key;
do {
key = random.nextLong();
} while (sharedObjects.containsKey(key));
sharedObjects.put(key, new WeakReference(o));
return key;
}
public synchronized Object getSharedObject(long key) {
if (sharedObjects.containsKey(key)) {
return sharedObjects.get(key).get();
}
return null;
}
}
无论如何都可以解决这个问题吗?
P.S。 - 我没有在这里发布答案,因为它已经在stackoverflow本身上了。但是,如果你仍然问我,我会的。
感谢。