在我现有的Android应用程序中,我使用MuPDF,我在this doc.的帮助下移植 现在,当我想在活动中打开pdf文件时,我使用: Uri uri = Uri.parse(路径);
Intent intent = new Intent(this, MuPDFActivity.class);
intent.setAction(Intent.ACTION_VIEW);
intent.setData(uri);
startActivity(intent);
启动一项新活动,我的问题是:(1)如何启动Fragment查看pdf? (2)MuPDF是否支持我可以在我的currant Android-Tab-View下调用的片段? (3)有没有办法将此活动转换为片段?
目前我在做:
public class DummySectionFragment extends Fragment {
public DummySectionFragment() {
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View rootView = null;
rootView = inflater.inflate(R.layout.activity_dummy_section_fragment, container, false);
Intent myIntent = new Intent(getActivity(), MuPDFActivity.class);
myIntent.setAction(Intent.ACTION_VIEW);
myIntent.setData(uri);
getActivity().startActivity(myIntent);
return rootView;
}
}
其中:在我当前的标签视图布局上打开一个新活动,这看起来不太好,因为它涵盖整个标签布局,用户必须单击BACK
按钮才能查看标签视图。
答案 0 :(得分:4)
也许您不应该在项目中使用MuPDFActivity - 这只是Mupdf工作原理的一个例子。您需要的只是MuPDFReaderView / MuPDFCore / MuPDFPageAdapter。 MuPDFReaderView从View / ViewGroup扩展,因此您只需将其添加到布局中即可。试试这样(完全未经测试!!):
1。)XML - >片段的基本布局(mupdf_wrapper.xml):
<RelativeLayout
android:id="@+id/mupdf_wrapper"
android:layout_width="match_parent"
android:layout_height="wrap_content">
</RelativeLayout>
2。)JAVA:
public class DummySectionFragment extends Fragment {
public DummySectionFragment() {
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View rootView = null;
rootView = inflater.inflate(R.layout.mupdf_wrapper, container, false);
RelativeLayout mupdfWrapper (RelativeLayout)rootView.findViewById(R.id.mupdf_wrapper);
String path = "path/To/Your/PDF/File.pdf";
MuPDFCore core = new MuPDFCore(getActivity(), path);
MuPDFReaderView mDocView = new MuPDFReaderView(getActivity());
mDocView.setAdapter(new MuPDFPageAdapter(getActivity(), getActivity(), core));
mupdfWrapper .addView(mDocView, new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT));
return rootView;
}
}
答案 1 :(得分:1)
将活动转换为片段:
public class a extend activity{
public void oncreate(Bundle Saveinstance)
{
super.oncreate(saveinstance);
setcontentview(r.layout.xyz);
}
}
转换......:
public class a extend fragment{
public void onstart()
{
super.onstart();
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// TODO Auto-generated method stub
return inflater.inflate(com.example.login.R.layout.fragment, container, false);
}
}
如果你有一个功能或者你想做一个Toast,你有xyz.this用getActivity()
取代他
Toast.makeText(xyz.this, e.getMessage(),Toast.LENGTH_LONG).show();
Toast.makeText(getActivity(), e.getMessage(),Toast.LENGTH_LONG).show();