5

Nella mia app Android esistente, Im usando MuPDF, che ho portato con l'aiuto di this doc. Ora quando voglio aprire i file PDF all'interno di un'attività che uso: Uri uri = Uri.parse (sentiero);MuPDF per Android: Opzione per il frammento, invece Attività

  Intent intent = new Intent(this, MuPDFActivity.class); 
      intent.setAction(Intent.ACTION_VIEW); 
      intent.setData(uri); 
      startActivity(intent); 

che genera una nuova attività, il mio problema è: (1) come posso avviare Fragment per visualizzare il pdf? (2) MuPDF supporta Fragment che posso chiamare sotto il mio ribes Android-Tab-View? (3) C'è un modo di convertire questa attività in frammento?

Attualmente sto facendo:

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; 
     } 
} 

Il che apre una nuova attività sul mio attuale layout di scheda Visualizza, che non sembrano grandi in quanto copre intero layout scheda e l'utente deve cliccare BACK pulsante per visualizzare tab.

risposta

4

Forse non dovresti usare MuPDFActivity nel tuo progetto - è solo un esempio di come funziona Mupdf. Tutto ciò di cui hai bisogno è MuPDFReaderView/MuPDFCore/MuPDFPageAdapter. MuPDFReaderView si estende da View/ViewGroup, quindi puoi aggiungerlo al tuo layout. Prova in questo modo (non testata totalmente !!):

1.) XML -> Il layout di base per il frammento (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

Conversione attività di frammento:

public class a extend activity{ 

    public void oncreate(Bundle Saveinstance) 
    { 
    super.oncreate(saveinstance); 
    setcontentview(r.layout.xyz); 
    }  
    } 

Conversione ...:

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

} 
} 

Se si dispone di una funzione o si vuole fare un brindisi, e avete xyz.this sostituirlo con getActivity()

Problemi correlati