Red de conocimiento informático - Material del sitio web - Cómo agregar Webview en un fragmento

Cómo agregar Webview en un fragmento

Dado que la inicialización predeterminada de CordovaWebView determina si el contenido hereda de CordovaInterface, si usa Fragment directamente para heredar CordovaInterface, tanto CordovaInterface como Fragment tienen un método abstracto getActivity (), y el método del mismo nombre de Fragment sigue siendo el método final. y no se puede anular la carga.

Si observamos el código fuente de CordovaWebView, se implementa así.

public CordovaWebView(Contexto contexto, AttributeSet attrs, int defStyle, boolean privateBrowsing) {

super(contexto, atributos, defStyle, privateBrowsing);

if ( CordovaInterface.class.isInstance(context))

{

this.cordova = (CordovaInterface) contexto;

}

else

{

Log.d(TAG, "Su actividad debe implementar CordovaInterface para funcionar");

}

this.cordova) ;

this.loadConfiguration();

this.setup();

}

Por lo tanto, simplemente cargue el contenido de CordovaWebView Simplemente configúrelo en la interfaz que implementa CordovaInterface.

Cree una clase para heredar la interfaz CordovaInterface:

privada... Dado que la inicialización predeterminada de CordovaWebView determinará si el contenido hereda de CordovaInterface, si usa Fragment directamente para heredar CordovaInterface, El método abstracto getActivity () de CordovaInterface entrará en conflicto con Fragment. El método del mismo nombre en Fragment sigue siendo el método final y no se puede sobrecargar.

Si observamos el código fuente de CordovaWebView, se implementa así.

public CordovaWebView(Contexto contexto, AttributeSet attrs, int defStyle, boolean privateBrowsing) {

super(contexto, atributos, defStyle, privateBrowsing);

if ( CordovaInterface.class.isInstance(context))

{

this.cordova = (CordovaInterface) contexto;

}

else

{

Log.d(TAG, "Su actividad debe implementar CordovaInterface para funcionar");

}

this.cordova) ;

this.loadConfiguration();

this.setup();

}

Por lo tanto, simplemente cargue el contenido de CordovaWebView Simplemente configúrelo en la interfaz que implementa CordovaInterface.

Implemente una clase para heredar la interfaz CordovaInterface:

clase privada CordovaContext extiende ContextWrapper implementa CordovaInterface {

Actividad actividad;

protegido final ExecutorService threadPool = Executors.newCachedThreadPool();

public CordovaContext(Actividad de actividad) {

super(actividad.getBaseContext());

this.activity = actividad;

}

public void startActivityForResult(comando CordovaPlugin, intención intención, int requestCode) {

//actividad.CordovaContext(CordovaContext)(comando CordovaPlugin) .

startActivityForResult(command, intent, requestCode);

}

public void setActivityResultCallback(complemento CordovaPlugin) {

//activity.setActivityResultCallback(plugin);

}

Actividad pública getActivity() {

actividad de retorno;

}

Objeto público onMessage(ID de cadena , Datos del objeto) {

return null

}

public ExecutorService getThreadPool() {

return threadPool;

}

}

Luego, en el método onCreateView del fragmento, cambie el contenido del inflador predeterminado LayoutInflater

inflater = cloneInContext(new CordovaContext; (mActivity);

Esto le permitirá utilizar CordovaWebView fragmentado normalmente.