【发布时间】:2015-06-10 18:35:06
【问题描述】:
所以我的应用程序中有一个 pdf 插件,它使用公共类 SimpleDocumentReader。这只是一堂课,而不是活动。我有一种方法,您可以在完成加载后更改文档的页面:
@Override
public void onLoadFinish(DocumentState.OPEN state) {
if (state == OPEN.SUCCESS) {
SharedPreferences pref= PreferenceManager.getDefaultSharedPreferences();
String page = pref.getString("example_list","");
goToPage(Integer.parseInt(page));
}
}
如您所见,我想访问 defaultsharedpreferences,其中存储了一个字符串,我可以使用该字符串更改页面。问题是,在 getDeaultSharedPreferences() 的方括号中;我需要上下文。我已经尝试了几件事:
getApplicationContext()(没用),
getActivity() 也很愚蠢。
还尝试让方法接收这样的上下文:
public void onLoadFinish(DocumentState.OPEN state, Context context) {
// line for getting sharedpreferences Context:
SharedPreferences pref= PreferenceManager.getDefaultSharedPreferences(context);
}
但它会引发几个错误: 首先,@Override 不起作用,因为
方法不会覆盖其超类中的方法
第二个错误在顶部,类本身:
public class SimpleDocumentReader implements ReaderListener {}
抛出此错误:
类“SimpleDocumentReader”必须在ReaderListener 中声明为抽象或实现抽象方法“onLoadFinish(OPEN)”。
这是什么意思?
编辑:下面是 SimpleDocumentReader 类的启动方式:
首先,在我的 Activity 中创建一个带有 SimpleReaderFactory 的 SimpleViewer:
SimpleDocumentReader v = SimpleReaderFactory.createSimpleViewer(this, null);
v.openUrl("myurl", "mypassword");
二、SimpleReaderFactory:
public class SimpleReaderFactory {
/**
* Creates and returns a PDF viewer used for viewing, reading, and
* navigating PDF document
*
* @param act
* The activity of the current application.
* @param listener
* The SimpleDocumentViewerListener instance.
*
* @return SimpleDocumentViewer The default PDF document viewer instance
*/
public static SimpleDocumentReader createSimpleViewer(Activity act,
SimpleDocumentReaderListener listener) {
SimpleDocumentReader viewer = new SimpleDocumentReader(act);
viewer.setListener(listener);
return viewer;
}
}
最后,我的 SimpleDocumentReader:
public class SimpleDocumentReader implements ReaderListener {
// a lot of stuff here, I will post the important snippets of code:
public void onLoadFinish(DocumentState.OPEN state) {
if (state == OPEN.SUCCESS) {
mControlView.init(mAct);
RelativeLayout layout = new RelativeLayout(mAct);
layout.addView(mReaderView);
layout.addView(mControlView);
mAct.setContentView(layout);
CoordConverter.initCoordConverter(mAct, mReaderView);
SharedPreferences pref=
//my attempts at getting the defaultsharedpreferences
PreferenceManager.getDefaultSharedPreferences();
String hour = pref.getString("example_list","");
goToPage(Integer.parseInt(hour));
}
}
【问题讨论】:
-
你在哪里实现
LoaderManager.LoaderCallbacks接口? -
我在代码中的任何地方都没有找到该接口(项目搜索),但如果您愿意,我可以粘贴 SimpleDocumentReader 类的整个代码。
标签: java android methods android-studio sharedpreferences