Cómo agregar Webview en un fragmento
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); p>
}
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.