【问题标题】:MuPDF for Android: Option for fragment instead ActivityMuPDF for Android:片段选项而不是活动
【发布时间】:2013-07-22 02:28:15
【问题描述】:

在我现有的 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 下调用的 Fragment? (3) 有没有办法把这个activity转化成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;
        }
}

哪个:在我当前的选项卡视图布局上打开一个新活动,它看起来不太好,因为它涵盖了整个选项卡布局,用户必须单击 BACK 按钮才能查看选项卡视图。

【问题讨论】:

    标签: android android-intent android-viewpager android-view mupdf


    【解决方案1】:

    也许您不应该在您的项目中使用 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;
        }
    

    }

    【讨论】:

      【解决方案2】:

      将活动转换为片段:

      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();
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-11-29
        • 1970-01-01
        • 2021-06-09
        • 1970-01-01
        相关资源
        最近更新 更多