I use the support library to add a bottom panel that is similar to the material design. The bottom panel works fine, but it seems that if I get a panel, if I try to open any fragment from my user adapter, the fragment will not open ... or maybe it will open behind my main layout? I have no idea how to understand this. Below is my code.
I read more posts about SO and on the Internet, and I think this is because the fragment is loaded correctly, but below or next to the bottom panel ... and why is it not visible? Why is this happening? Is this because the bottom panel has LinearLayout? I defined it as a menu, so I'm not sure if I can control it as LinearLayout ....
Setting up the bottom panel, this method is called from onCreate of my activity:
public void setupBottomToolbar(Bundle savedInstanceState) { mBottomBar = BottomBar.attach(MainActivity.this, savedInstanceState); mBottomBar.setItems(R.menu.bottombar_menu); mBottomBar.setOnMenuTabClickListener(new OnMenuTabClickListener() { @Override public void onMenuTabSelected(@IdRes int menuItemId) { if (menuItemId == R.id.toolbar_jobs) { } else if (menuItemId == R.id.toolbar_messages) { } else if (menuItemId == R.id.toolbar_recentJobs) { } else if (menuItemId == R.id.toolbar_employerPools) { } } @Override public void onMenuTabReSelected(@IdRes int menuItemId) { if (menuItemId == R.id.toolbar_jobs) {
In my adapter, I try to open a fragment when you click a button, for example:
holder.desc.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Toast.makeText(context, "Open Description", Toast.LENGTH_SHORT).show(); JobDescFragment firstFragment = new JobDescFragment(); ((MainActivity)context).getSupportFragmentManager().beginTransaction() .add(R.id.fragment_container, firstFragment).commit(); } });
If I comment on the setupBottomToolbar () call in my onCreate activity, the fragment opens fine ... but that means I don't have a bottom bar ...
What am I missing? There should be a way to use the bottom panel and also open a fragment?
Thanks!
EDIT:
Here is the top of my activity.
public class MainActivity extends AppCompatActivity { private ArrayList<String> swipecardsList; private ArrayList<Job> jobList = new ArrayList<Job>(); private JobAdapter arrayAdapter;
My adapter:
public class JobAdapter extends ArrayAdapter<Job> { private final Context context; private final ArrayList<Job> jobs; private final int layoutResourceId; private final SwipeFlingAdapterView flingContainer; private boolean isExpanded = false; public JobAdapter(Context context, int layoutResourceId, ArrayList<Job> jobs, SwipeFlingAdapterView flingContainer) { super(context, layoutResourceId, jobs); this.context = context; this.jobs = jobs; this.layoutResourceId = layoutResourceId; this.flingContainer = flingContainer; } @Override public View getView(int position, View convertView, ViewGroup parent) { View view = convertView; final ViewHolder holder; String pay, hrs; final Bundle fragmentParams = new Bundle(); LayoutInflater inflater = LayoutInflater.from(context); if (view == null) { view = inflater.inflate(layoutResourceId, parent, false); holder = new ViewHolder(); holder.title = (TextView)view.findViewById(R.id.tv_jobTitle); holder.desc = (TextView) view.findViewById(R.id.tv_JobDesc); view.setTag(holder); } else { holder = (ViewHolder)view.getTag(); } Job j = jobs.get(position); holder.title.setText(j.getJobTitle()); holder.desc.setText(j.getDescription());
activity_main.xml:
<merge 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"> <com.lorentzos.flingswipe.SwipeFlingAdapterView android:id="@+id/frame" android:background="@color/laborswipe_lightgray" android:layout_width="wrap_content" android:layout_height="wrap_content" tools:context=".MainActivity" android:layout_gravity="top" /> <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/fragment_container" android:layout_width="match_parent" android:layout_height="match_parent" /> </merge>
Fragment Layout:
<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=".JobDescFragment"> <LinearLayout android:id="@+id/outerDescriptionLayout" android:layout_width="match_parent" android:layout_height="400dp" android:layout_gravity="center_horizontal|top" android:orientation="vertical" android:background="@drawable/swipecard_shadow" android:gravity="top" android:layout_marginLeft="5dp"> <LinearLayout android:id="@+id/DescriptionLayout" android:layout_width="match_parent" android:layout_height="400dp" android:layout_gravity="center_horizontal|top" android:orientation="vertical" android:weightSum="1" android:gravity="top" android:layout_marginTop="20dp" android:layout_marginLeft="10dp" android:layout_marginRight="10dp" android:background="#00FF00" android:clickable="true"> <TextView android:layout_width="200dp" android:layout_height="200dp" android:text="Detailed Description:" android:textColor="#000000" android:id="@+id/tv_title" /> <TextView android:layout_width="200dp" android:layout_height="200dp" android:text="THIS IS THE FULL DESCRIPTION" android:textColor="#000000" android:id="@+id/tv_fullDescription" /> </LinearLayout> </LinearLayout> </FrameLayout>
Logcat:
08-07 11:20:47.799 13896-13896/com.lorentzos.swipecards.example I/System.out: DEBUG: job desc fragment loaded! 08-07 11:20:47.855 13896-13941/com.lorentzos.swipecards.example W/EGL_emulation: eglSurfaceAttrib not implemented 08-07 11:20:47.855 13896-13941/com.lorentzos.swipecards.example W/OpenGLRenderer: Failed to set EGL_SWAP_BEHAVIOR on surface 0xaaa7f880, error=EGL_SUCCESS 08-07 11:20:48.002 13896-13941/com.lorentzos.swipecards.example V/RenderScript: 0xa1408000 Launching thread(s), CPUs 2 08-07 11:20:49.798 13896-13941/com.lorentzos.swipecards.example E/Surface: getSlotFromBufferLocked: unknown buffer: 0xae433ca0
When I use the bottom panel (doesn't work - not a single fragment is open, but a toast is displayed):

When I do not use the bottom panel (the working fragment is open, the background is green):
