MuPDF for Android:选择片段而不是活动的选项

6
在我的现有Android应用程序中,我使用了MuPDF,我借助这个文档进行了移植。 现在当我想要在活动中打开PDF文件时,我使用: Uri uri = Uri.parse(path);
            Intent intent = new Intent(this, MuPDFActivity.class);
            intent.setAction(Intent.ACTION_VIEW);
            intent.setData(uri);
            startActivity(intent);

触发一个新活动,我的问题是:(1) 如何启动Fragment来查看PDF? (2) MuPDF是否支持Fragment,以便我可以在当前的Android-Tab-View下调用它? (3) 有没有一种方法将此活动转换为Fragment?
目前我正在做的是:
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;
        }
}

“Which”:在当前的Tab视图布局中打开一个新的活动,这看起来不太好,因为它覆盖了整个Tab布局,用户必须点击“返回”按钮才能查看Tab视图。
2个回答

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
将活动转换为片段:
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();

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接