I have created a horizontal menu, and one of the Fragments that make up the menu shows me a button, which when pressed would have to show another Fragment, but it is not displayed, it does not show any error, it just does not get to be displayed.
This is the Fragment where I have the button to show the other Fragment
MainActivity.java
public class MainActivity extends AppCompatActivity {
private ViewPager viewPager;
HorizontalScrollMenuView horizontal_menu;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
horizontal_menu = (HorizontalScrollMenuView) findViewById(R.id.horizontal_menu);
viewPager = (ViewPager) findViewById(R.id.pager);
horizontal_menu.addItem("Menu 1", R.drawable.home_icon, true);
horizontal_menu.addItem("Boton", R.drawable.round_account);
horizontal_menu.addItem("Esquema", R.drawable.notifications);
horizontal_menu.showItems();//hacemos visible los items del menu
PagerAdapter pagerAdapter = new PagerAdapter(getSupportFragmentManager());
viewPager.setAdapter(pagerAdapter);
viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
@Override
public void onPageSelected(int position) {
//cambiamos el elemento seleccionado del menu a la posicion actual del viewpager
horizontal_menu.setItemSelected(position);
}
@Override
public void onPageScrollStateChanged(int state) {
}
});
//implementamos la interface para caputar los clic en el menu
horizontal_menu.setOnHSMenuClickListener(new HorizontalScrollMenuView.OnHSMenuClickListener() {
@Override
public void onHSMClick(MenuItem menuItem, int position) {
viewPager.setCurrentItem(position);
}
});
}
private class PagerAdapter extends FragmentPagerAdapter {
//public PagerAdapter(FragmentManager fm) {
PagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int position) {
switch (position) {
case 0:
return new Menu1();
case 1:
return new Boton();
case 2:
return new Esquema();
default:
return new Menu1();
}
}
@Override
public int getCount() {
return 3;
}
}
}
Fragment Boton.java
public class Boton extends Fragment {
private Button verEsquema;
public Boton() {
}
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View rootView = inflater.inflate( R.layout.boton, container, false );
verEsquema = (Button) rootView.findViewById(R.id.btn_boton1);
verEsquema.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Fragment nuevoFragmento = new Esquema();
FragmentTransaction transaction = getFragmentManager().beginTransaction();
//transaction.replace(R.id.frame_container, nuevoFragmento);
transaction.replace(((ViewGroup)getView().getParent()).getId(), nuevoFragmento);
transaction.addToBackStack(null);
transaction.commit();
}
});
return rootView;
}
}
boton.xml
<?xml version="1.0" encoding="utf-8"?>
<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/linearLayout"
android:layout_width="match_parent"
android:layout_height="match_parent">
<Button
android:id="@+id/btn_boton1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginLeft="8dp"
android:layout_marginTop="68dp"
android:layout_marginEnd="8dp"
android:layout_marginRight="8dp"
android:layout_marginBottom="8dp"
android:text="Boton 1"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.0" />
</android.support.constraint.ConstraintLayout>
Fragment Schema.java
public class Esquema extends Fragment {
WebView mWebView;
public Esquema() {
}
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate( R.layout.esquema, container, false );
mWebView = (WebView) view.findViewById( R.id.webView_esquema);
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:///android_asset/esquema.html");
return view;
}
}
outline.xml
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout
xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent"
android:layout_height="match_parent">
<WebView
android:id="@+id/webView_esquema"
android:layout_width="match_parent"
android:layout_height="match_parent">
</WebView>
</FrameLayout>
activity_main.xml
<com.darwindeveloper.horizontalscrollmenulibrary.custom_views.HorizontalScrollMenuView
android:id="@+id/horizontal_menu"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:backgroundMenuColor="#0099cc"
app:backgroundNotifications="@color/colorAccent"
app:icon_height="50dp"
app:icon_width="50dp"
app:item_backgroundColor="@color/colorPrimary"
app:item_colorSelected="#ffffff"
app:item_textColor="#ffffff" />
<android.support.v4.view.ViewPager
android:id="@+id/pager"
android:layout_width="match_parent"
android:layout_height="match_parent" >
</android.support.v4.view.ViewPager>
<FrameLayout
android:id="@+id/frame_container"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
</FrameLayout>
</LinearLayout>
Could you tell me what I'm doing wrong and why is not it showing?
Thank you.