App is trying to open a layout of the aar fragment as if it is main app's fragment

46 Views Asked by At

I have an aar library (com.pg.clusive) with activities and fragments in it (it is like a mini app). When I implement it in the main app(com.pg.mainapp), I can start an activity from the aar without any problem. It shows the activity and its layout.

However, when I try to show a fragment in this activity, it looks for the layout of the fragment in the path of the main module, not in the aar. And unable to find it as below.

FATAL EXCEPTION: main
Process: com.pg.mainapp.test, PID: 16803
android.view.InflateException: Binary XML file line #30 in com.pg.mainapp.test:layout/fragment_clusive_dashboard_cl: Binary XML file line #30 in com.pg.mainapp.test:layout/fragment_clusive_dashboard_cl: Error inflating class <unknown>
Caused by: android.view.InflateException: Binary XML file line #30 in com.pg.mainapp.test:layout/fragment_clusive_dashboard_cl: Error inflating class <unknown>
Caused by: java.lang.reflect.InvocationTargetException
    at java.lang.reflect.Constructor.newInstance0(Native Method)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:343)
    at android.view.LayoutInflater.createView(LayoutInflater.java:854)
    at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:1006)
    at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:961)
    at android.view.LayoutInflater.rInflate(LayoutInflater.java:1123)
    at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:1084)
    at android.view.LayoutInflater.rInflate(LayoutInflater.java:1126)
    at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:1084)
    at android.view.LayoutInflater.inflate(LayoutInflater.java:682)
    at android.view.LayoutInflater.inflate(LayoutInflater.java:534)
    at androidx.databinding.DataBindingUtil.inflate(DataBindingUtil.java:126)
    at androidx.databinding.DataBindingUtil.inflate(DataBindingUtil.java:95)
    at com.pg.clusive.base.BaseFragment.onCreateView(BaseFragment.kt:45)
    at androidx.fragment.app.Fragment.performCreateView(Fragment.java:3104)
    at androidx.fragment.app.FragmentStateManager.createView(FragmentStateManager.java:524)
    at androidx.fragment.app.FragmentStateManager.moveToExpectedState(FragmentStateManager.java:261)
    at androidx.fragment.app.FragmentManager.executeOpsTogether(FragmentManager.java:1890)
    at androidx.fragment.app.FragmentManager.removeRedundantOperationsAndExecute(FragmentManager.java:1808)
    at androidx.fragment.app.FragmentManager.execPendingActions(FragmentManager.java:1751)
    at androidx.fragment.app.FragmentManager.dispatchStateChange(FragmentManager.java:2976)
    at androidx.fragment.app.FragmentManager.dispatchActivityCreated(FragmentManager.java:2886)
    at androidx.fragment.app.FragmentController.dispatchActivityCreated(FragmentController.java:263)
    at androidx.fragment.app.FragmentActivity.onStart(FragmentActivity.java:351)
    at androidx.appcompat.app.AppCompatActivity.onStart(AppCompatActivity.java:251)
    at com.pg.clusive.base.BaseActivity.onStart(BaseActivity.kt:113)
    at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1425)
    at android.app.Activity.performStart(Activity.java:7825)
    at android.app.ActivityThread.handleStartActivity(ActivityThread.java:3294)
    at android.app.servertransaction.TransactionExecutor.performLifecycleSequence(TransactionExecutor.java:221)
    at android.app.servertransaction.TransactionExecutor.cycleToPath(TransactionExecutor.java:201)
    at android.app.servertransaction.TransactionExecutor.executeLifecycleState(TransactionExecutor.java:173)
    at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:97)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2016)
    at android.os.Handler.dispatchMessage(Handler.java:107)
    at android.os.Looper.loop(Looper.java:214)
    at android.app.ActivityThread.main(ActivityThread.java:7356)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:930)
Caused by: java.lang.NullPointerException: Missing required view with ID: com.pg.mainapp.test:id/iv_clusive_logo
    at com.pg.clusive.databinding.LayoutTopbarBinding.bind(LayoutTopbarBinding.java:118)
    at com.pg.clusive.databinding.LayoutTopbarBinding.inflate(LayoutTopbarBinding.java:73)
    at com.pg.clusive.utils.AppTopBar.<init>(AppTopBar.kt:25)
    at java.lang.reflect.Constructor.newInstance0(Native Method) 
    at java.lang.reflect.Constructor.newInstance(Constructor.java:343) 
    at android.view.LayoutInflater.createView(LayoutInflater.java:854) 
    at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:1006) 
    at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:961) 
    at android.view.LayoutInflater.rInflate(LayoutInflater.java:1123) 
    at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:1084) 
    at android.view.LayoutInflater.rInflate(LayoutInflater.java:1126) 
    at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:1084) 
    at android.view.LayoutInflater.inflate(LayoutInflater.java:682) 
    at android.view.LayoutInflater.inflate(LayoutInflater.java:534) 
    at androidx.databinding.DataBindingUtil.inflate(DataBindingUtil.java:126) 
    at androidx.databinding.DataBindingUtil.inflate(DataBindingUtil.java:95) 
    at com.pg.clusive.base.BaseFragment.onCreateView(BaseFragment.kt:45) 
    at androidx.fragment.app.Fragment.performCreateView(Fragment.java:3104) 
    at androidx.fragment.app.FragmentStateManager.createView(FragmentStateManager.java:524) 
    at androidx.fragment.app.FragmentStateManager.moveToExpectedState(FragmentStateManager.java:261) 
    at androidx.fragment.app.FragmentManager.executeOpsTogether(FragmentManager.java:1890) 
    at androidx.fragment.app.FragmentManager.removeRedundantOperationsAndExecute(FragmentManager.java:1808) 
    at androidx.fragment.app.FragmentManager.execPendingActions(FragmentManager.java:1751) 
    at androidx.fragment.app.FragmentManager.dispatchStateChange(FragmentManager.java:2976) 
    at androidx.fragment.app.FragmentManager.dispatchActivityCreated(FragmentManager.java:2886) 
    at androidx.fragment.app.FragmentController.dispatchActivityCreated(FragmentController.java:263) 
    at androidx.fragment.app.FragmentActivity.onStart(FragmentActivity.java:351) 
    at androidx.appcompat.app.AppCompatActivity.onStart(AppCompatActivity.java:251) 
    at com.pg.clusive.base.BaseActivity.onStart(BaseActivity.kt:113) 
    at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1425) 
    at android.app.Activity.performStart(Activity.java:7825) 
    at android.app.ActivityThread.handleStartActivity(ActivityThread.java:3294) 
    at android.app.servertransaction.TransactionExecutor.performLifecycleSequence(TransactionExecutor.java:221) 
    at android.app.servertransaction.TransactionExecutor.cycleToPath(TransactionExecutor.java:201) 
    at android.app.servertransaction.TransactionExecutor.executeLifecycleState(TransactionExecutor.java:173) 
    at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:97) 
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2016) 
    at android.os.Handler.dispatchMessage(Handler.java:107) 
    at android.os.Looper.loop(Looper.java:214) 
    at android.app.ActivityThread.main(ActivityThread.java:7356) 
    at java.lang.reflect.Method.invoke(Native Method) 
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:930) 

I inflate the layout of the fragment in aar like this:

override fun onCreateView(
    inflater: LayoutInflater,
    container: ViewGroup?,
    savedInstanceState: Bundle?
): View? {
    binding = DataBindingUtil.inflate(inflater, layoutResourceId, container, false)
    return binding.root
}

I controlled the build/intermediates/merged_res directory of the project. Aar resources are not included there. But i can access them on main app when i writes its names. It is confusing.

0

There are 0 best solutions below