Binary XML file line #20 in com.example.nearmedemo:layout/fragment_home
возникла следующая проблема:
Binary XML file line #20 in com.example.nearmedemo:layout/fragment_home:
Binary XML file line #20 in com.example.nearmedemo:layout/fragment_home:
Error inflating class com.google.android.material.textfield.TextInputLayout
Caused by: android.view.InflateException:
Binary XML file line #20 in com.example.nearmedemo:layout/fragment_home:
Error inflating class com.google.android.material.textfield.TextInputLayout
Часть из HomeFragment.java:
public HomeFragment() {
}
@Override
public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
binding = FragmentHomeBinding.inflate(inflater, container, false);
appPermissions = new AppPermissions();
firebaseAuth = FirebaseAuth.getInstance();
loadingDialog = new LoadingDialog(requireActivity());
retrofitAPI = RetrofitClient.getRetrofitClient().create(RetrofitAPI.class);
googlePlaceModelList = new ArrayList<>();
userSavedLocationId = new ArrayList<>();
locationReference = FirebaseDatabase.getInstance().getReference("Places");
userLocationReference = FirebaseDatabase.getInstance().getReference("Users")
.child(firebaseAuth.getUid()).child("Saved Locations");
binding.btnMapType.setOnClickListener(view -> {
PopupMenu popupMenu = new PopupMenu(requireContext(), view);
popupMenu.getMenuInflater().inflate(R.menu.map_type_menu, popupMenu.getMenu());
popupMenu.setOnMenuItemClickListener(item -> {
switch (item.getItemId()) {
case R.id.btnNormal:
mGoogleMap.setMapType(GoogleMap.MAP_TYPE_NORMAL);
break;
case R.id.btnSatellite:
mGoogleMap.setMapType(GoogleMap.MAP_TYPE_SATELLITE);
break;
case R.id.btnTerrain:
mGoogleMap.setMapType(GoogleMap.MAP_TYPE_TERRAIN);
break;
}
return true;
});
popupMenu.show();
});
fragment_home.xml:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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"
tools:context=".Fragments.HomeFragment">
<fragment
android:id="@+id/homeMap"
android:name="com.google.android.gms.maps.SupportMapFragment"
android:layout_width="match_parent"
android:layout_height="match_parent" />
<androidx.coordinatorlayout.widget.CoordinatorLayout
android:id="@+id/coordinate"
android:layout_width="match_parent"
android:layout_height="120dp">
<com.google.android.material.textfield.TextInputLayout
style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginHorizontal="40dp"
android:elevation="10dp"
app:boxBackgroundColor="@color/white"
app:boxCornerRadiusBottomEnd="25dp"
app:boxCornerRadiusBottomStart="25dp"
app:boxCornerRadiusTopEnd="25dp"
app:boxCornerRadiusTopStart="25dp"
app:boxStrokeColor="@color/white"
app:boxStrokeWidth="0dp"
app:endIconMode="clear_text"
app:hintEnabled="false"
app:layout_anchor="@id/view"
app:layout_anchorGravity="bottom|center">
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/edtPlaceName"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:drawableStart="@drawable/ic_location"
android:drawablePadding="10dp"
android:drawableTint="@color/primaryColor"
android:hint="Search Place"
android:inputType="text"
android:maxLines="1"
android:textColorHint="@color/itemTextColor" />
</com.google.android.material.textfield.TextInputLayout>
<View
android:id="@+id/view"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginBottom="30dp"
android:background="@drawable/map_background"
android:elevation="5dp" />
</androidx.coordinatorlayout.widget.CoordinatorLayout>
<HorizontalScrollView
android:id="@+id/placesList"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/coordinate"
android:scrollbars="none">
<com.google.android.material.chip.ChipGroup
android:id="@+id/placesGroup"
style="@style/Widget.MaterialComponents.Chip.Choice"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:singleLine="true"
app:singleSelection="true" />
</HorizontalScrollView>
<com.google.android.material.floatingactionbutton.FloatingActionButton
android:id="@+id/btnMapType"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/placesList"
android:layout_alignParentEnd="true"
android:layout_margin="15dp"
android:src="@drawable/ic_map_type"
app:backgroundTint="@color/white"
app:fabCustomSize="40dp"
app:tint="@color/primaryColor" />
<com.google.android.material.floatingactionbutton.FloatingActionButton
android:id="@+id/enableTraffic"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/btnMapType"
android:layout_alignParentEnd="true"
android:layout_marginEnd="15dp"
android:src="@drawable/ic_traffic"
app:backgroundTint="@color/white"
app:fabCustomSize="40dp"
app:tint="@color/itemTextColor" />
<com.google.android.material.floatingactionbutton.FloatingActionButton
android:id="@+id/currentLocation"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/enableTraffic"
android:layout_alignParentEnd="true"
android:layout_margin="15dp"
android:src="@drawable/ic_my_location"
app:backgroundTint="@color/white"
app:fabCustomSize="50dp"
app:tint="@color/primaryColor" />
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/placesRecyclerView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_marginBottom="26dp"
android:clipToPadding="false"
android:orientation="horizontal"
android:paddingLeft="8dp"
android:paddingRight="8dp"
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager" />
</RelativeLayout>
Logcat:
2021-04-30 19:23:05.175 11441-11441/com.example.nearmedemo E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.nearmedemo, PID: 11441
android.view.InflateException: Binary XML file line #20 in com.example.nearmedemo:layout/fragment_home: Binary XML file line #20 in com.example.nearmedemo:layout/fragment_home: Error inflating class com.google.android.material.textfield.TextInputLayout
Caused by: android.view.InflateException: Binary XML file line #20 in com.example.nearmedemo:layout/fragment_home: Error inflating class com.google.android.material.textfield.TextInputLayout
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 com.example.nearmedemo.databinding.FragmentHomeBinding.inflate(FragmentHomeBinding.java:85)
at com.example.nearmedemo.Fragments.HomeFragment.onCreateView(HomeFragment.java:115)
at androidx.fragment.app.Fragment.performCreateView(Fragment.java:2698)
at androidx.fragment.app.FragmentStateManager.createView(FragmentStateManager.java:320)
at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1187)
at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1356)
at androidx.fragment.app.FragmentManager.moveFragmentToExpectedState(FragmentManager.java:1434)
at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1497)
at androidx.fragment.app.FragmentManager.dispatchStateChange(FragmentManager.java:2625)
at androidx.fragment.app.FragmentManager.dispatchActivityCreated(FragmentManager.java:2577)
at androidx.fragment.app.Fragment.performActivityCreated(Fragment.java:2722)
at androidx.fragment.app.FragmentStateManager.activityCreated(FragmentStateManager.java:346)
at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1188)
at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1356)
at androidx.fragment.app.FragmentManager.moveFragmentToExpectedState(FragmentManager.java:1434)
at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1497)
at androidx.fragment.app.FragmentManager.dispatchStateChange(FragmentManager.java:2625)
at androidx.fragment.app.FragmentManager.dispatchActivityCreated(FragmentManager.java:2577)
at androidx.fragment.app.FragmentController.dispatchActivityCreated(FragmentController.java:247)
at androidx.fragment.app.FragmentActivity.onStart(FragmentActivity.java:541)
at androidx.appcompat.app.AppCompatActivity.onStart(AppCompatActivity.java:210)
at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1433)
at android.app.Activity.performStart(Activity.java:7986)
at android.app.ActivityThread.handleStartActivity(ActivityThread.java:3677)
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:2267)
at android.os.Handler.dispatchMessage(Handler.java:107)
at android.os.Looper.loop(Looper.java:237)
at android.app.ActivityThread.main(ActivityThread.java:8167)
2021-04-30 19:23:05.175 11441-11441/com.example.nearmedemo E/AndroidRuntime: at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:496)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1100)
Caused by: java.lang.IllegalArgumentException: This component requires that you specify a valid TextAppearance attribute. Update your app theme to inherit from Theme.MaterialComponents (or a descendant).
at com.google.android.material.internal.ThemeEnforcement.checkTextAppearance(ThemeEnforcement.java:187)
at com.google.android.material.internal.ThemeEnforcement.obtainTintedStyledAttributes(ThemeEnforcement.java:118)
at com.google.android.material.textfield.TextInputLayout.<init>(TextInputLayout.java:460)
at com.google.android.material.textfield.TextInputLayout.<init>(TextInputLayout.java:419)
... 46 more
2021-04-30 19:23:05.200 11441-11441/com.example.nearmedemo I/Process: Sending signal. PID: 11441 SIG: 9
Что это и с чем оно связано? Прошу помогите...
Ответы (1 шт):
Автор решения: Shams
→ Ссылка
Вы должны наследовать от темы MaterialComponents чтобы использовать этот view (то есть TextInputLayout).
Для этого создайте новую тему в styles.xml.
<style name="MaterialTheme" parent="Theme.MaterialComponents.Light.DarkActionBar.Bridge">
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
</style>
В манифестe в теге application используйте только что созданную тему
<application
android:theme="@style/MaterialTheme"
Или примените эту тему на конкретную activity. В вашем случае activity который содержит HomeFragment
<activity
android:theme="@style/AppTheme"
android:name=".ui.HomeFragmentActivity"/>