2015-12-22 8 views
6

Ho provato a creare componenti di interfaccia utente nativa ed è spesso un problema. Il componente non sembra essere reso in nativi reattivi.Come si fa a visualizzare un frammento Android in nativi reattivi?

Tuttavia, per questa domanda, sto specificatamente cercando di rendere un frammento Android all'interno di react-native ma non viene visualizzato nulla. Esempio di codice:

public class PreferenceViewManager extends SimpleViewManager<FrameLayout> { 
    public static final String REACT_CLASS = "RCTPreferenceView"; 

    private WeakReference<Activity> activityWeakReference; 

    public PreferenceViewManager(WeakReference<Activity> activityWeakReference) { 
     this.activityWeakReference = activityWeakReference; 
    } 

    @Override 
    public String getName() { 
     return REACT_CLASS; 
    } 

    @Override 
    public FrameLayout createViewInstance(ThemedReactContext context) { 
     Log.d(REACT_CLASS, "PreferenceView createViewInstance"); 
     final FrameLayout view = new FrameLayout(context); 
     view.setId(View.generateViewId()); 
     // Testing if the view does get rendered, it should show white even if fragment is not rendered! 
     view.setBackgroundColor(Color.WHITE); 
     // not sure where to call fragment beginTransaction properly, the code below is just for testing 
     view.postDelayed(new Runnable() { 
      @Override 
      public void run() { 
       onAfterUpdateTransaction(view); 
      } 
     }, 2000); 
     return view; 
    } 

    @Override 
    public void onAfterUpdateTransaction(FrameLayout view) { 
     super.onAfterUpdateTransaction(view); 

     activityWeakReference.get().getFragmentManager().beginTransaction().replace(view.getId(), new PreferenceView()).commit(); 
     Log.d(REACT_CLASS, "PreferenceView Commit"); // for debug 
    } 
} 

Con quanto sopra View Manager, il luogo dove la vista si suppone che sia non è nemmeno di colore bianco a significare che il FrameLayout in sé non viene reso.

Cosa sto sbagliando?

+0

sono stati in grado di risolvere questo problema? Si prega di dimostrare e rispondere! – lschmierer

risposta

Problemi correlati