질문Android Studio에서 Navigation Drawer하려는 과정에서 문제가 있습니다!
Toolbar의 햄버거 버튼을 누르면 메뉴가 나오는 Navigation Drawer를 만들기 위해 activity_main.xml의 NavigationView 태그를 주석처리하면 아래의 사진처럼 실행은 됩니다. 그러나 주석처리를 없애면 바로 튕겨버립니다.. activity_main.xml의 NavigationView 태그 위치가 문제인 것 같아서 이리저리 바꿔보았지만, 같은 이유로 계속 강제 종료 되었습니다. 해결방법을 찾고 싶습니다! Logcat: E/AndroidRuntime: FATAL EXCEPTION: main Process: com.example.myapplication, PID: 17929 java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.myapplication/com.example.myapplication.MainActivity}: android.view.InflateException: Binary XML file line #10 in com.example.myapplication:layout/activity_main: Binary XML file line #10 in com.example.myapplication:layout/activity_main: Error inflating class com.google.android.material.navigation.NavigationView at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3270) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3409) at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:83) at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135) at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95) 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: android.view.InflateException: Binary XML file line #10 in com.example.myapplication:layout/activity_main: Binary XML file line #10 in com.example.myapplication:layout/activity_main: Error inflating class com.google.android.material.navigation.NavigationView Caused by: android.view.InflateException: Binary XML file line #10 in com.example.myapplication:layout/activity_main: Error inflating class com.google.android.material.navigation.NavigationView 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.inflate(LayoutInflater.java:682) at android.view.LayoutInflater.inflate(LayoutInflater.java:534) at android.view.LayoutInflater.inflate(LayoutInflater.java:481) at androidx.appcompat.app.AppCompatDelegateImpl.setContentView(AppCompatDelegateImpl.java:696) at androidx.appcompat.app.AppCompatActivity.setContentView(AppCompatActivity.java:170) at com.example.myapplication.MainActivity.onCreate(MainActivity.java:50) at android.app.Activity.performCreate(Activity.java:7802) at android.app.Activity.performCreate(Activity.java:7791) at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1299) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3245) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3409) at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:83) at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135) at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95) 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) E/AndroidRuntime: Caused by: android.view.InflateException: Binary XML file line #27 in com.example.myapplication:layout/nav_header_main: Binary XML file line #27 in com.example.myapplication:layout/nav_header_main: Error inflating class TextView Caused by: android.view.InflateException: Binary XML file line #27 in com.example.myapplication:layout/nav_header_main: Error inflating class TextView Caused by: java.lang.UnsupportedOperationException: Can't convert value at index 2 to dimension: type=0x1 at android.content.res.TypedArray.getDimensionPixelSize(TypedArray.java:786) at android.widget.TextView.readTextAppearance(TextView.java:3971) at android.widget.TextView.<init>(TextView.java:1064) at android.widget.TextView.<init>(TextView.java:968) at androidx.appcompat.widget.AppCompatTextView.<init>(AppCompatTextView.java:100) at com.google.android.material.textview.MaterialTextView.<init>(MaterialTextView.java:93) at com.google.android.material.textview.MaterialTextView.<init>(MaterialTextView.java:88) at com.google.android.material.textview.MaterialTextView.<init>(MaterialTextView.java:83) at com.google.android.material.theme.MaterialComponentsViewInflater.createTextView(MaterialComponentsViewInflater.java:61) at androidx.appcompat.app.AppCompatViewInflater.createView(AppCompatViewInflater.java:115) at androidx.appcompat.app.AppCompatDelegateImpl.createView(AppCompatDelegateImpl.java:1551) at androidx.appcompat.app.AppCompatDelegateImpl.onCreateView(AppCompatDelegateImpl.java:1602) at android.view.LayoutInflater.tryCreateView(LayoutInflater.java:1061) at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:997) 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.google.android.material.internal.NavigationMenuPresenter.inflateHeaderView(NavigationMenuPresenter.java:222) at com.google.android.material.navigation.NavigationView.inflateHeaderView(NavigationView.java:387) at com.google.android.material.navigation.NavigationView.<init>(NavigationView.java:241) at com.google.android.material.navigation.NavigationView.<init>(NavigationView.java:122) 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.inflate(LayoutInflater.java:682) at android.view.LayoutInflater.inflate(LayoutInflater.java:534) at android.view.LayoutInflater.inflate(LayoutInflater.java:481) at androidx.appcompat.app.AppCompatDelegateImpl.setContentView(AppCompatDelegateImpl.java:696) at androidx.appcompat.app.AppCompatActivity.setContentView(AppCompatActivity.java:170) at com.example.myapplication.MainActivity.onCreate(MainActivity.java:50) at android.app.Activity.performCreate(Activity.java:7802) at android.app.Activity.performCreate(Activity.java:7791) at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1299) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3245) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3409) at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:83) at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135) at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95) 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) MainActivity.java: public class MainActivity extends AppCompatActivity { // 툴바 private Toolbar toolbar; private DrawerLayout drawerLayout; private NavigationView navigationView; // 가운데 private ViewPager2 viewPager2; private DotsIndicator dotsIndicator; private ArrayList<DataPage> list; // 바텀네비게이션뷰 private BottomNavigationView bottomNav; private FragmentManager fragmentManager = getSupportFragmentManager(); private SearchPage fragmentSearch = new SearchPage(); private HomePage fragmentHome = new HomePage(); private CafePage fragmentCafe = new CafePage(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // 바텀네비게이션 bottomNav = findViewById(R.id.navigationView); bottomNav.setOnNavigationItemSelectedListener(new ItemSelectedListener()); this.InitializeLayout(); // 툴바 this.viewpage(); // 뷰페이저 //FragmentTransaction transaction = fragmentManager.beginTransaction(); //transaction.replace(R.id.frameLayout, fragmentSearch).commitAllowingStateLoss(); // 바텀네비게이션 } //툴바 private void InitializeLayout() { //toolBar를 통해 App Bar 생성 toolbar = findViewById(R.id.toolbar); drawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout); //navigationView = (NavigationView) findViewById(R.id.nav_view); setSupportActionBar(toolbar); ActionBar actionBar = getSupportActionBar(); actionBar.setDisplayShowTitleEnabled(false); // 기존 title 지우기 actionBar.setDisplayHomeAsUpEnabled(true); // 왼쪽 버튼 사용 여부 true actionBar.setHomeAsUpIndicator(R.drawable.ic_reorder_white_24dp); // 왼쪽 버튼 이미지 설정 // 툴바 오른쪽 버튼 @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.menu, menu); return true; } //추가된 소스, ToolBar에 추가된 항목의 select 이벤트를 처리하는 함수 @Override public boolean onOptionsItemSelected(MenuItem item) { //return super.onOptionsItemSelected(item); int id = item.getItemId(); switch (id) { case android.R.id.home: drawerLayout.openDrawer(GravityCompat.START); Toast.makeText(getApplicationContext(), "메뉴 버튼 클릭됨", Toast.LENGTH_LONG).show(); return true; } return super.onOptionsItemSelected(item); } private void viewpage(){ list = new ArrayList<>(); list.add(new DataPage(R.drawable.sample_1, "Starbucks", 4900)); list.add(new DataPage(R.drawable.sample_2, "Twosome Place", 4100)); list.add(new DataPage(R.drawable.sample_3, "EDIYA", 3000)); list.add(new DataPage(R.drawable.sample_3, "EDIYA", 3000)); list.add(new DataPage(R.drawable.sample_3, "EDIYA", 3000)); list.add(new DataPage(R.drawable.sample_3, "EDIYA", 3000)); list.add(new DataPage(R.drawable.sample_3, "EDIYA", 3000)); list.add(new DataPage(R.drawable.sample_3, "EDIYA", 3000)); list.add(new DataPage(R.drawable.sample_3, "EDIYA", 3000)); list.add(new DataPage(R.drawable.sample_3, "EDIYA", 3000)); viewPager2 = findViewById(R.id.viewPager2); viewPager2.setAdapter(new ViewPagerAdapter(list)); dotsIndicator = findViewById(R.id.dots_indicator); dotsIndicator.setViewPager2(viewPager2); } //바텀네비 class ItemSelectedListener implements BottomNavigationView.OnNavigationItemSelectedListener { @Override public boolean onNavigationItemSelected(@NonNull MenuItem menuItem) { FragmentTransaction transaction = fragmentManager.beginTransaction(); switch (menuItem.getItemId()) { case R.id.searchItem: transaction.replace(R.id.frameLayout, fragmentSearch).commitAllowingStateLoss(); break; case R.id.homeItem: transaction.replace(R.id.frameLayout, fragmentHome).commitAllowingStateLoss(); break; case R.id.cafeItem: transaction.replace(R.id.frameLayout, fragmentCafe).commitAllowingStateLoss(); break; } return true; } } } activity_main.xml: <?xml version="1.0" encoding="utf-8"?> <androidx.drawerlayout.widget.DrawerLayout android:id="@+id/drawer_layout" android:layout_width="match_parent" android:layout_height="match_parent" android:fitsSystemWindows="false" xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto"> <!-- @@@@@이 부분만 추가하면 이러한 에러 발생 @@@@@@--> <com.google.android.material.navigation.NavigationView android:id="@+id/nav_view" android:layout_width="200dp" android:layout_height="match_parent" android:layout_gravity="start" android:background="@drawable/side_nav_bar_white" android:fitsSystemWindows="false" app:headerLayout="@layout/nav_header_main" app:menu="@menu/activity_main_drawer" app:itemTextAppearance="@style/text_size"> </com.google.android.material.navigation.NavigationView> <!-- @@@@@이 부분만 추가하면 이러한 에러 발생 @@@@@@--> <LinearLayout 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" android:orientation="vertical" android:background="@color/cfb" tools:context=".MainActivity"> <androidx.appcompat.widget.Toolbar android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" android:background="?attr/colorPrimary" android:elevation="4dp" android:theme="@style/ThemeOverlay.AppCompat.Dark"> <TextView android:id="@+id/toolbar_title" android:text="@string/app_name" android:textSize="25sp" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center"/> </androidx.appcompat.widget.Toolbar> <FrameLayout android:id="@+id/content_layout" android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1" > <androidx.constraintlayout.widget.ConstraintLayout android:id="@+id/linearLayout" android:layout_width="match_parent" android:layout_height="500dp" android:layout_marginTop="100dp" android:background="@color/cfb" tools:context=".MainActivity"> <TextView android:id="@+id/TitleText2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/title2" android:textColor="#000000" android:textSize="30sp" android:textStyle="bold" android:layout_marginBottom="10dp" app:layout_constraintBottom_toTopOf="@+id/viewPager2" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" /> <ImageButton android:id="@+id/refreshButton" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginStart="30dp" android:layout_marginLeft="30dp" android:layout_marginBottom="20dp" android:background="@color/cfb" app:layout_constraintBottom_toTopOf="@+id/viewPager2" app:layout_constraintStart_toEndOf="@+id/TitleText2" app:srcCompat="@drawable/refresh_111075__2_" /> <TextView android:id="@+id/refreshText" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/refresh" android:textColor="#000000" android:textSize="18sp" android:layout_marginStart="20dp" android:layout_marginLeft="20dp" app:layout_constraintStart_toEndOf="@+id/TitleText2"/> <ImageButton android:id="@+id/filterButton" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="0dp" android:layout_marginBottom="10dp" android:layout_marginEnd="15dp" android:layout_marginRight="28dp" android:background="@color/cfb" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintBottom_toTopOf="@+id/dots_indicator" app:srcCompat="@drawable/filter" /> <TextView android:id="@+id/filterText" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginEnd="25dp" android:layout_marginRight="40dp" android:text="@string/filter" android:textColor="#000000" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintTop_toBottomOf="@+id/filterButton" /> <androidx.viewpager2.widget.ViewPager2 android:id="@+id/viewPager2" android:layout_width="270dp" android:layout_height="270dp" android:layout_marginBottom="130dp" android:orientation="horizontal" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintHorizontal_bias="0.5" app:layout_constraintStart_toStartOf="parent" app:layout_constraintVertical_bias="0.3" /> <com.tbuonomo.viewpagerdotsindicator.DotsIndicator android:id="@+id/dots_indicator" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="110dp" app:dotsColor="@color/white" app:dotsCornerRadius="8dp" app:dotsSize="14dp" app:dotsSpacing="4dp" app:dotsWidthFactor="2.5" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintHorizontal_bias="0.498" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@id/viewPager2" app:layout_constraintBottom_toBottomOf="parent" app:progressMode="true" app:selectedDotColor="@color/black" /> <ImageView android:layout_width="90dp" android:layout_height="90dp" android:layout_marginStart="10dp" android:layout_marginLeft="10dp" android:layout_marginTop="70dp" android:clickable="true" app:srcCompat="@drawable/cafebot" /> </androidx.constraintlayout.widget.ConstraintLayout> <androidx.constraintlayout.widget.ConstraintLayout android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity"> <FrameLayout android:id="@+id/frameLayout" android:layout_width="match_parent" android:layout_height="0dp" app:layout_constraintBottom_toTopOf="@id/navigationView" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintRight_toRightOf="parent" app:layout_constraintTop_toTopOf="parent"/> <com.google.android.material.bottomnavigation.BottomNavigationView android:id="@+id/navigationView" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="?android:attr/windowBackground" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintRight_toLeftOf="parent" app:menu="@menu/bottom_nav" /> </androidx.constraintlayout.widget.ConstraintLayout> </FrameLayout> </LinearLayout> </androidx.drawerlayout.widget.DrawerLayout>