0

I have the following layout (activity_order_list) and I have created a master-detail layout, where on one side is the fragment and the other side its the container that will be populated by the selected item in the master view. However, am I facing an issue that results in the posted stack trace. I have tried changing in name to class in the fragment

activity_order_list XML layout

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.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:layout_width="match_parent"
    android:layout_height="match_parent">

    <FrameLayout
        android:id="@+id/content_frame"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

    <androidx.constraintlayout.widget.ConstraintLayout
        android:id="@+id/content_frame_act"
        android:layout_width="match_parent"
        android:layout_height="match_parent">    

        <com.google.android.material.appbar.AppBarLayout
            android:id="@+id/appBarLayout"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:theme="@style/AppTheme.AppBarOverlay"
            app:layout_constraintTop_toTopOf="parent">

            <androidx.appcompat.widget.Toolbar
                android:id="@+id/toolbar"
                android:layout_width="match_parent"
                android:layout_height="?attr/actionBarSize"
                android:background="@color/touchside_orange"
                android:minHeight="?attr/actionBarSize"
                app:popupTheme="@style/AppTheme.PopupOverlay" />

        </com.google.android.material.appbar.AppBarLayout>

            <LinearLayout
            android:id="@+id/LinearLayout1"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:baselineAligned="false"
            android:orientation="horizontal"
            android:showDividers="middle"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toBottomOf="@+id/appBarLayout">

            <fragment
                android:id="@+id/fragmentOrderList"
                class="ts.kiosk.app.inventory.FragmentOrderList"
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_weight="1.1"
                app:layout_constraintBottom_toBottomOf="parent"
                app:layout_constraintEnd_toEndOf="parent"
                app:layout_constraintStart_toStartOf="parent"
                app:layout_constraintTop_toTopOf="parent"
                tools:layout="@layout/fragment_orders_items_list" />

            <View
                android:layout_width="1dp"
                android:layout_height="wrap_content"
                android:background="#000000" />

            <FrameLayout
                android:id="@+id/flDetailContainer"
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_weight="2.8" />

        </LinearLayout>

    </androidx.constraintlayout.widget.ConstraintLayout>

</androidx.constraintlayout.widget.ConstraintLayout>

ActivityOrderList Activity

public class ActivityOrderList extends BaseActivity implements FragmentOrderList.OnItemSelectedListener
{

    // Lets bind those views
    @BindView(R.id.flDetailContainer) FrameLayout fragmentOrderDetail;
    @BindView(R.id.toolbar)
    Toolbar toolbar;

    private boolean isTwoPane = false;

    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        setContentView(R.layout.activity_order_list);
        ButterKnife.bind(this);
        super.onCreate(savedInstanceState);

        init();

        determinePaneLayout();
    }

    private void init()
    {
        toolbar.setTitle("Process Orders");
        toolbar.setTitleTextColor(Color.WHITE);
        toolbar.setNavigationIcon(R.drawable.ic_arrow_back_white_40dp);
        toolbar.setNavigationOnClickListener(new View.OnClickListener()
        {
            @Override
            public void onClick(View v)
            {
                onBackPressed();
            }
        });
                   }

    private void determinePaneLayout()
    {
            if(fragmentOrderDetail!=null)
        {
            isTwoPane = true;
            FragmentOrderList fragmentOrderList = (FragmentOrderList) getSupportFragmentManager().findFragmentById(R.id.fragmentOrderList);

        }
    }

    @Override
    public void onItemSelected(String order_id)
    {
           FragmentOrderDetails fragmentItem = FragmentOrderDetails.newInstance(order_id);
        FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
        ft.replace(R.id.flDetailContainer, fragmentItem);
        ft.commit();
        }

    @Override
    public void receiveBarcode(String barcode)
    {
    } 
}

Stack Trace:

02-05 10:48:09.379 23591-23591/ts.kiosk.app.inventory.debug E/AndroidRuntime: FATAL EXCEPTION: main
    Process: ts.kiosk.app.inventory.debug, PID: 23591
    java.lang.RuntimeException: Unable to start activity ComponentInfo{ts.kiosk.app.inventory.debug/ts.kiosk.app.inventory.ActivityOrderList}: android.view.InflateException: Binary XML file line #50: Binary XML file line #50: Error inflating class fragment
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2416)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476)
        at android.app.ActivityThread.access$900(ActivityThread.java:150)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344)
        at android.os.Handler.dispatchMessage(Handler.java:102)
        at android.os.Looper.loop(Looper.java:148)
        at android.app.ActivityThread.main(ActivityThread.java:5417)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
     Caused by: android.view.InflateException: Binary XML file line #50: Binary XML file line #50: Error inflating class fragment
        at android.view.LayoutInflater.inflate(LayoutInflater.java:539)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:423)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:374)
        at androidx.appcompat.app.AppCompatDelegateImpl.setContentView(AppCompatDelegateImpl.java:469)
        at androidx.appcompat.app.AppCompatActivity.setContentView(AppCompatActivity.java:141)
        at ts.kiosk.app.inventory.ActivityOrderList.onCreate(ActivityOrderList.java:27)
        at android.app.Activity.performCreate(Activity.java:6285)
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1108)
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2369)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476) 
        at android.app.ActivityThread.access$900(ActivityThread.java:150) 
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344) 
        at android.os.Handler.dispatchMessage(Handler.java:102) 
        at android.os.Looper.loop(Looper.java:148) 
        at android.app.ActivityThread.main(ActivityThread.java:5417) 
        at java.lang.reflect.Method.invoke(Native Method) 
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 
     Caused by: android.view.InflateException: Binary XML file line #50: Error inflating class fragment
        at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:782)
        at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:704)
        at android.view.LayoutInflater.rInflate(LayoutInflater.java:835)
        at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:798)
        at android.view.LayoutInflater.rInflate(LayoutInflater.java:838)
        at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:798)
        at android.view.LayoutInflater.rInflate(LayoutInflater.java:838)
        at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:798)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:515)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:423) 
        at android.view.LayoutInflater.inflate(LayoutInflater.java:374) 
        at androidx.appcompat.app.AppCompatDelegateImpl.setContentView(AppCompatDelegateImpl.java:469) 
        at androidx.appcompat.app.AppCompatActivity.setContentView(AppCompatActivity.java:141) 
        at ts.kiosk.app.inventory.ActivityOrderList.onCreate(ActivityOrderList.java:27) 
        at android.app.Activity.performCreate(Activity.java:6285) 
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1108) 
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2369) 
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476) 
        at android.app.ActivityThread.access$900(ActivityThread.java:150) 
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344) 
        at android.os.Handler.dispatchMessage(Handler.java:102) 
        at android.os.Looper.loop(Looper.java:148) 
        at android.app.ActivityThread.main(ActivityThread.java:5417) 
        at java.lang.reflect.Method.invoke(Native Method) 
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 
     Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'android.content.Context androidx.fragment.app.FragmentHostCallback.getContext()' on a null object reference
        at androidx.fragment.app.FragmentManagerImpl.onCreateView(FragmentManagerImpl.java:3106)
        at androidx.fragment.app.FragmentController.onCreateView(FragmentController.java:133)
        at androidx.fragment.app.FragmentActivity.dispatchFragmentsOnCreateView(FragmentActivity.java:345)
        at androidx.fragment.app.FragmentActivity.onCreateView(FragmentActivity.java:324)
        at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:754)
        at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:704) 
        at android.view.LayoutInflater.rInflate(LayoutInflater.java:835) 
        at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:798) 
        at android.view.LayoutInflater.rInflate(LayoutInflater.java:838) 
        at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:798) 
        at android.view.LayoutInflater.rInflate(LayoutInflater.java:838) 
        at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:798) 
        at android.view.LayoutInflater.inflate(LayoutInflater.java:515) 
        at android.view.LayoutInflater.inflate(LayoutInflater.java:423) 
        at android.view.LayoutInflater.inflate(LayoutInflater.java:374) 
        at androidx.appcompat.app.AppCompatDelegateImpl.setContentView(AppCompatDelegateImpl.java:469) 
        at androidx.appcompat.app.AppCompatActivity.setContentView(AppCompatActivity.java:141) 
        at ts.kiosk.app.inventory.ActivityOrderList.onCreate(ActivityOrderList.java:27) 
        at android.app.Activity.performCreate(Activity.java:6285) 
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1108) 
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2369) 
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476) 
        at android.app.ActivityThread.access$900(ActivityThread.java:150) 
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344) 
        at android.os.Handler.dispatchMessage(Handler.java:102) 
        at android.os.Looper.loop(Looper.java:148) 
        at android.app.ActivityThread.main(ActivityThread.java:5417) 
        at java.lang.reflect.Method.invoke(Native Method) 
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 
George
  • 2,865
  • 6
  • 35
  • 59
  • Let move `super.onCreate()` on the top of onCreate method. You cannot initiate view before this. – grabarz121 Feb 05 '19 at 09:06
  • @grabarz121 i need the super.Create to be where it is – George Feb 05 '19 at 12:08
  • No, you don't. [Here's](https://stackoverflow.com/a/14671985/5712938) a short description, what's `super()` method do. If you still must stay `super` in that line, your Activity will never create, and any code won't perform there. – grabarz121 Feb 05 '19 at 12:55
  • @grabarz121 I have a base activity whos content that has to load content before it creates that current activity – George Feb 05 '19 at 12:57
  • `setContentView()` sets a view of Activity from layout in an existing activity, call this before super method try to set view, when activity doesn't exist yet. You must first create an activity by firing super method, then you can set view on it. – grabarz121 Feb 05 '19 at 13:05
  • @grabarz121 you are correct. I think we might have broken the rules. Question, when I extend the base class is the baseclass run first before the current activity – George Feb 05 '19 at 13:36
  • Let us [continue this discussion in chat](https://chat.stackoverflow.com/rooms/187929/discussion-between-george-and-grabarz121). – George Feb 05 '19 at 13:40

0 Answers0