SoCu
30/09/18, 11:19:43
Hola, os agradecería si me podéis ayudar a ver porque no puedo mostrar un Fragment.
Tengo creado dos clases que extienden de Fragment, en una tengo puesto varios botones, unos botones muestran un archivo y otros muestran una página web.
El problema es que al pulsar sobre un botón para que muestre el otro Fragment, no hace nada, ni me muestra ningún mensaje de error.
Clase donde tengo puesto dos botones extiende de Fragment, uno de ellos llama una clase Activity y otro una clase Fragment, el botón del Activity si se muestra, y el Fragment no.
PDF.JAVA (hay más botones, para el ejemplo solo he dejado dos)
public class PDF extends Fragment {
Button botonAdobe2;
ImageButton botonEsquema;
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View rootView = inflater.inflate( R.layout.pdf, container, false );
botonAdobe2 = rootView.findViewById(R.id.btAdobe2);
botonEsquema = rootView.findViewById(R.id.btEsquema);
botonAdobe2.setOnClickListener(new View.OnClickListener() {
override
public void onClick(View view) {
Intent intent = new Intent(getActivity(),PDF_2.class);
startActivity(intent);
}
});
botonEsquema.setOnClickListener(new View.OnClickListener() {
override
public void onClick(View view) {
Esquema_SG_M fragment = new Esquema_SG_M();
FragmentTransaction ftEs = getFragmentManager().beginTransaction();
ftEs.replace(R.id.frame_container, fragment);
ftEs.addToBackStack(null);
ftEs.commit();
}
});
return rootView;
}
}
pdf.XML
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/frameLayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.SoCu.CirDocu.PDF">
<Button
android:id="@+id/btAdobe2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="56dp"
android:layout_marginTop="44dp"
android:background="@android:color/transparent"
android:drawableStart="@drawable/icon_adobe"
app:layout_constraintStart_toEndOf="@+id/btAdobe1"
app:layout_constraintTop_toBottomOf="@+id/btGGGG" />
<ImageButton
android:id="@+id/btEsquema"
android:layout_width="125dp"
android:layout_height="65dp"
android:layout_marginBottom="8dp"
android:layout_marginEnd="128dp"
android:layout_marginStart="8dp"
android:layout_marginTop="32dp"
android:adjustViewBounds="true"
android:scaleType="fitCenter"
android:background="@android:color/transparent"
android:src="@drawable/esquema_sg_m"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.9"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/btAdobe2"
app:layout_constraintVertical_bias="0.0" />
</android.support.constraint.ConstraintLayout>
Esquema_SG_M.JAVA muestra una pagina web que esta en una carpeta local (memoria del telefono)
public class Esquema_SG_M extends Fragment {
private static final String ARG_PARAM1 = "param1";
private static final String ARG_PARAM2 = "param2";
private String mParam1;
private String mParam2;
WebView mWebView;
private OnFragmentInteractionListener mListener;
public Esquema_SG_M() {
}
public static Esquema_SG_M newInstance(String param1, String param2) {
Esquema_SG_M fragment_SG = new Esquema_SG_M();
Bundle args = new Bundle();
args.putString( ARG_PARAM1, param1 );
args.putString( ARG_PARAM2, param2 );
fragment_SG.setArguments( args );
return fragment_SG;
}
override
public void onCreate(Bundle savedInstanceState) {
super.onCreate( savedInstanceState );
if (getArguments() != null) {
mParam1 = getArguments().getString( ARG_PARAM1 );
mParam2 = getArguments().getString( ARG_PARAM2 );
}
}
override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate( R.layout.esquema_sg_m, container, false );
mWebView = view.findViewById( R.id.webView_sg_m );
mWebView.getSettings().setJavaScriptEnabled( true );
mWebView.getSettings().setAppCacheEnabled( true );
mWebView.getSettings().setBuiltInZoomControls( true );
mWebView.getSettings().setDisplayZoomControls( false );
mWebView.getSettings().setSupportZoom( true );
mWebView.getSettings().setDefaultZoom( WebSettings.ZoomDensity.FAR );
mWebView.getSettings().setLoadWithOverviewMode( true );
mWebView.getSettings().setUseWideViewPort( true );
mWebView.setScrollBarStyle(View.SCROLLBARS_INSIDE_ OVERLAY);
mWebView.setScrollbarFadingEnabled(false);
mWebView.loadUrl("file:///pagina_web_local.html");
return view;
}
public void onButtonPressed(Uri uri) {
if (mListener != null) {
mListener.onFragmentInteraction(uri);
}
}
override
public void onDetach() {
super.onDetach();
mListener = null;
}
public interface OnFragmentInteractionListener {
void onFragmentInteraction(Uri uri);
}
}
esquema_sg_m.xml
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".Esquema_SG_M">
<WebView
android:id="@+id/webView_sg_m"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</FrameLayout>
No es que estoy muy puesto en programación con Android, pero la información que he visto en páginas web y video, parece que es este el código para mostrar un Fragment desde otro Fragment.
Sabe alguien porque no me funciona?
Gracias.
Tengo creado dos clases que extienden de Fragment, en una tengo puesto varios botones, unos botones muestran un archivo y otros muestran una página web.
El problema es que al pulsar sobre un botón para que muestre el otro Fragment, no hace nada, ni me muestra ningún mensaje de error.
Clase donde tengo puesto dos botones extiende de Fragment, uno de ellos llama una clase Activity y otro una clase Fragment, el botón del Activity si se muestra, y el Fragment no.
PDF.JAVA (hay más botones, para el ejemplo solo he dejado dos)
public class PDF extends Fragment {
Button botonAdobe2;
ImageButton botonEsquema;
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View rootView = inflater.inflate( R.layout.pdf, container, false );
botonAdobe2 = rootView.findViewById(R.id.btAdobe2);
botonEsquema = rootView.findViewById(R.id.btEsquema);
botonAdobe2.setOnClickListener(new View.OnClickListener() {
override
public void onClick(View view) {
Intent intent = new Intent(getActivity(),PDF_2.class);
startActivity(intent);
}
});
botonEsquema.setOnClickListener(new View.OnClickListener() {
override
public void onClick(View view) {
Esquema_SG_M fragment = new Esquema_SG_M();
FragmentTransaction ftEs = getFragmentManager().beginTransaction();
ftEs.replace(R.id.frame_container, fragment);
ftEs.addToBackStack(null);
ftEs.commit();
}
});
return rootView;
}
}
pdf.XML
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/frameLayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.SoCu.CirDocu.PDF">
<Button
android:id="@+id/btAdobe2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="56dp"
android:layout_marginTop="44dp"
android:background="@android:color/transparent"
android:drawableStart="@drawable/icon_adobe"
app:layout_constraintStart_toEndOf="@+id/btAdobe1"
app:layout_constraintTop_toBottomOf="@+id/btGGGG" />
<ImageButton
android:id="@+id/btEsquema"
android:layout_width="125dp"
android:layout_height="65dp"
android:layout_marginBottom="8dp"
android:layout_marginEnd="128dp"
android:layout_marginStart="8dp"
android:layout_marginTop="32dp"
android:adjustViewBounds="true"
android:scaleType="fitCenter"
android:background="@android:color/transparent"
android:src="@drawable/esquema_sg_m"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.9"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/btAdobe2"
app:layout_constraintVertical_bias="0.0" />
</android.support.constraint.ConstraintLayout>
Esquema_SG_M.JAVA muestra una pagina web que esta en una carpeta local (memoria del telefono)
public class Esquema_SG_M extends Fragment {
private static final String ARG_PARAM1 = "param1";
private static final String ARG_PARAM2 = "param2";
private String mParam1;
private String mParam2;
WebView mWebView;
private OnFragmentInteractionListener mListener;
public Esquema_SG_M() {
}
public static Esquema_SG_M newInstance(String param1, String param2) {
Esquema_SG_M fragment_SG = new Esquema_SG_M();
Bundle args = new Bundle();
args.putString( ARG_PARAM1, param1 );
args.putString( ARG_PARAM2, param2 );
fragment_SG.setArguments( args );
return fragment_SG;
}
override
public void onCreate(Bundle savedInstanceState) {
super.onCreate( savedInstanceState );
if (getArguments() != null) {
mParam1 = getArguments().getString( ARG_PARAM1 );
mParam2 = getArguments().getString( ARG_PARAM2 );
}
}
override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate( R.layout.esquema_sg_m, container, false );
mWebView = view.findViewById( R.id.webView_sg_m );
mWebView.getSettings().setJavaScriptEnabled( true );
mWebView.getSettings().setAppCacheEnabled( true );
mWebView.getSettings().setBuiltInZoomControls( true );
mWebView.getSettings().setDisplayZoomControls( false );
mWebView.getSettings().setSupportZoom( true );
mWebView.getSettings().setDefaultZoom( WebSettings.ZoomDensity.FAR );
mWebView.getSettings().setLoadWithOverviewMode( true );
mWebView.getSettings().setUseWideViewPort( true );
mWebView.setScrollBarStyle(View.SCROLLBARS_INSIDE_ OVERLAY);
mWebView.setScrollbarFadingEnabled(false);
mWebView.loadUrl("file:///pagina_web_local.html");
return view;
}
public void onButtonPressed(Uri uri) {
if (mListener != null) {
mListener.onFragmentInteraction(uri);
}
}
override
public void onDetach() {
super.onDetach();
mListener = null;
}
public interface OnFragmentInteractionListener {
void onFragmentInteraction(Uri uri);
}
}
esquema_sg_m.xml
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".Esquema_SG_M">
<WebView
android:id="@+id/webView_sg_m"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</FrameLayout>
No es que estoy muy puesto en programación con Android, pero la información que he visto en páginas web y video, parece que es este el código para mostrar un Fragment desde otro Fragment.
Sabe alguien porque no me funciona?
Gracias.