IllegalArgumentException: ID does not reference a View inside this Activity
D

4

8

I have been trying to make a home page for my app which contains some modern dashboard along with navigation drawer. Error found in my code:

 E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.example.thinkerlab, PID: 13956
    java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.thinkerlab/com.example.thinkerlab.HomePage}: java.lang.IllegalArgumentException: ID does not reference a View inside this Activity
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2517)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2577)
        at android.app.ActivityThread.access$1000(ActivityThread.java:166)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1414)
        at android.os.Handler.dispatchMessage(Handler.java:102)
        at android.os.Looper.loop(Looper.java:148)
        at android.app.ActivityThread.main(ActivityThread.java:5619)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:853)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:737)
     Caused by: java.lang.IllegalArgumentException: ID does not reference a View inside this Activity
        at androidx.core.app.ActivityCompat.requireViewById(ActivityCompat.java:368)
        at androidx.navigation.Navigation.findNavController(Navigation.java:58)
        at com.example.thinkerlab.HomePage.onCreate(HomePage.java:70)
        at android.app.Activity.performCreate(Activity.java:6351)
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1114)
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2470)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2577) 
        at android.app.ActivityThread.access$1000(ActivityThread.java:166) 
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1414) 
        at android.os.Handler.dispatchMessage(Handler.java:102) 
        at android.os.Looper.loop(Looper.java:148) 
        at android.app.ActivityThread.main(ActivityThread.java:5619) 
        at java.lang.reflect.Method.invoke(Native Method) 
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:853) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:737) 

AndroidManifest.xml file of my project:

<?xml version="1.0" encoding="utf-8"?>

<application
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:roundIcon="@mipmap/ic_launcher_round"
    android:supportsRtl="true"
    android:theme="@style/AppTheme">
    <activity android:name=".Page1"></activity>
    <activity android:name=".Startpage" />
    <activity
        android:name=".HomePage"
        android:label="@string/title_activity_home_page"
        android:theme="@style/AppTheme.NoActionBar" />
    <activity android:name=".ResetPassword" />
    <activity android:name=".RegistrationActivity" />
    <activity android:name=".MainActivity">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

    <meta-data
        android:name="preloaded_fonts"
        android:resource="@array/preloaded_fonts" />
</application>

HomePage.java file of my project:

 package com.example.thinkerlab;

import android.app.Activity;
import android.content.Intent;
import android.os.Build;
import android.os.Bundle;
import android.view.MenuItem;
import android.view.Menu;
import android.widget.Toast;

import com.google.android.material.navigation.NavigationView;

import androidx.annotation.NonNull;
import androidx.annotation.RequiresApi;
import androidx.appcompat.app.ActionBar;
import androidx.appcompat.app.ActionBarDrawerToggle;
import androidx.core.view.GravityCompat;
import androidx.navigation.NavController;
import androidx.navigation.Navigation;
import androidx.navigation.ui.AppBarConfiguration;
import androidx.navigation.ui.NavigationUI;
import androidx.drawerlayout.widget.DrawerLayout;
import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.Toolbar;

public class HomePage extends AppCompatActivity implements NavigationView.OnNavigationItemSelectedListener {

    DrawerLayout drawerLayout;
    NavigationView navigationView;
    Toolbar toolbar;
    ActionBar actionBar;
    Activity activity;

    private AppBarConfiguration mAppBarConfiguration;

    @RequiresApi(api = Build.VERSION_CODES.KITKAT)
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_home_page);
        toolbar = findViewById(R.id.toolbar2);
        setSupportActionBar(toolbar);

       actionBar = getSupportActionBar();
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);

        getSupportActionBar().setHomeButtonEnabled(true);

        drawerLayout = findViewById(R.id.drawer_layout);
        navigationView = findViewById(R.id.nav_view);

        Menu menu=navigationView.getMenu();
        menu.findItem(R.id.nav_Log_out).setVisible(true);
        menu.findItem(R.id.nav_Profile).setVisible(true);
        navigationView.bringToFront();

        ActionBarDrawerToggle toggle= new ActionBarDrawerToggle(this,drawerLayout,toolbar,R.string.navigation_drawer_open,R.string.navigation_drawer_close);
        drawerLayout.addDrawerListener(toggle);
        toggle.syncState();
        navigationView.setNavigationItemSelectedListener(this);
        navigationView.setCheckedItem(R.id.nav_home);


        // Passing each menu ID as a set of Ids because each
        // menu should be considered as top level destinations.
        mAppBarConfiguration = new AppBarConfiguration.Builder(
                R.id.nav_home, R.id.nav_gallery, R.id.nav_slideshow)
                .setDrawerLayout(drawerLayout)
                .build();
        NavController navController = Navigation.findNavController(this, R.id.nav_host_fragment);
        NavigationUI.setupActionBarWithNavController(this, navController, mAppBarConfiguration);
        NavigationUI.setupWithNavController(navigationView, navController);
    }




    public void onBackPressed()
    {
        if(drawerLayout.isDrawerOpen(GravityCompat.START))
        {
            drawerLayout.closeDrawer(GravityCompat.START);
        }
        else
        {
            super.onBackPressed();
        }

    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.home_page, menu);
        return true;
    }



    @Override
    public boolean onSupportNavigateUp() {
        NavController navController = Navigation.findNavController(this, R.id.nav_host_fragment);
        return NavigationUI.navigateUp(navController, mAppBarConfiguration)
                || super.onSupportNavigateUp();
    }


    @Override
    public boolean onNavigationItemSelected(@NonNull MenuItem item) {

        switch (item.getItemId())
        {
            case R.id.nav_home:
                break;
            case R.id.nav_Science:
                startActivity(new Intent(HomePage.this,Page1.class));
                break;
            case R.id.nav_Contact_Us:
                Toast.makeText(this,"Share",Toast.LENGTH_SHORT).show();
                break;
            case R.id.nav_Log_out:
                startActivity(new Intent(HomePage.this,MainActivity.class));
                break;

        }
        drawerLayout.closeDrawer(GravityCompat.START);
        return  true;
    }
}

styles.xml file of my project:

<resources>

<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <!-- Customize your theme here. -->
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>


</style>

<style name="AppTheme.NoActionBar">
    <item name="windowActionBar">false</item>
    <item name="windowNoTitle">true</item>
</style>

<style name="AppTheme.AppBarOverlay" parent="ThemeOverlay.AppCompat.Dark.ActionBar" />

<style name="AppTheme.PopupOverlay" parent="ThemeOverlay.AppCompat.Light" />

My activity_home_page xml file:

<?xml version="1.0" encoding="utf-8"?>
<androidx.drawerlayout.widget.DrawerLayout 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:id="@+id/drawer_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fitsSystemWindows="true"
    tools:openDrawer="start">
    <com.google.android.material.navigation.NavigationView
        android:id="@+id/nav_view"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_gravity="start"
        android:fitsSystemWindows="true"
        app:headerLayout="@layout/header"
        app:menu="@menu/main_menu" />

    <ScrollView
        android:layout_width="match_parent"
        android:layout_height="match_parent">



        <androidx.constraintlayout.widget.ConstraintLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent">


            <ImageView
                android:id="@+id/iv1"
                android:layout_width="0dp"
                android:layout_height="150dp"
                android:layout_marginEnd="16dp"
                android:layout_marginRight="16dp"
                app:layout_constraintEnd_toEndOf="parent"
                app:layout_constraintStart_toEndOf="@+id/textView2"
                app:layout_constraintTop_toBottomOf="@+id/toolbar2"
                app:srcCompat="@drawable/p" />

            <TextView
                android:id="@+id/textView3"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_marginStart="16dp"
                android:layout_marginLeft="16dp"
                android:fontFamily="sans-serif-condensed-medium"
                android:text="Let's Think and Build"
                android:textSize="18sp"
                app:layout_constraintEnd_toStartOf="@+id/iv1"
                app:layout_constraintHorizontal_bias="0.0"
                app:layout_constraintStart_toStartOf="parent"
                app:layout_constraintTop_toBottomOf="@+id/textView2" />

            <TextView
                android:id="@+id/textView2"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginStart="16dp"
                android:layout_marginLeft="16dp"
                android:fontFamily="serif"
                android:text="Thinker Lab"
                android:textSize="36sp"
                app:layout_constraintEnd_toStartOf="@+id/iv1"
                app:layout_constraintStart_toStartOf="parent"
                app:layout_constraintTop_toBottomOf="@+id/toolbar2" />
            <androidx.appcompat.widget.Toolbar
                android:id="@+id/toolbar2"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:background="#04FFFFFF"
                app:layout_constraintEnd_toEndOf="parent"
                app:layout_constraintStart_toStartOf="parent"
                app:layout_constraintTop_toTopOf="parent"


                android:minHeight="?attr/actionBarSize"
                android:theme="?attr/actionBarTheme"
                tools:layout_editor_absoluteX="1dp"
                tools:ignore="MissingConstraints" />


            <LinearLayout
                android:id="@+id/linearLayout2"
                android:layout_width="0dp"
                android:layout_height="175dp"
                android:orientation="horizontal"
                android:padding="10dp"
                app:layout_constraintEnd_toEndOf="parent"
                app:layout_constraintHorizontal_bias="0.0"
                app:layout_constraintStart_toStartOf="parent"
                app:layout_constraintTop_toBottomOf="@+id/iv1">

                <androidx.cardview.widget.CardView
                    android:layout_width="0dp"
                    android:layout_height="match_parent"
                    android:layout_margin="10dp"
                    android:layout_weight="1">

                    <RelativeLayout
                        android:layout_width="match_parent"
                        android:layout_height="match_parent">

                        <ImageView
                            android:id="@+id/iv2"
                            android:layout_width="75dp"
                            android:layout_height="75dp"
                            android:layout_centerHorizontal="true"
                            android:layout_marginTop="15dp"
                            app:srcCompat="@drawable/science" />

                        <TextView
                            android:id="@+id/textView4"
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:layout_below="@id/iv2"
                            android:layout_centerHorizontal="true"
                            android:layout_marginTop="10dp"
                            android:fontFamily="@font/aclonica"
                            android:text="Science"
                            android:textSize="18sp" />
                    </RelativeLayout>
                </androidx.cardview.widget.CardView>

                <androidx.cardview.widget.CardView
                    android:layout_width="0dp"
                    android:layout_height="match_parent"
                    android:layout_margin="10dp"
                    android:layout_weight="1">

                    <RelativeLayout
                        android:layout_width="match_parent"
                        android:layout_height="match_parent">

                        <ImageView
                            android:id="@+id/iv3"
                            android:layout_width="75dp"
                            android:layout_height="75dp"
                            android:layout_centerHorizontal="true"
                            android:layout_marginTop="15dp"
                            app:srcCompat="@drawable/maths" />

                        <TextView
                            android:id="@+id/textView5"
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:layout_below="@id/iv3"
                            android:layout_centerHorizontal="true"
                            android:layout_marginTop="10dp"
                            android:fontFamily="@font/aclonica"
                            android:text="Mathematics"
                            android:textSize="18sp" />
                    </RelativeLayout>
                </androidx.cardview.widget.CardView>
            </LinearLayout>

            <LinearLayout
                android:layout_width="0dp"
                android:layout_height="175dp"
                android:orientation="horizontal"
                android:padding="10dp"
                app:layout_constraintEnd_toEndOf="parent"
                app:layout_constraintHorizontal_bias="0.0"
                app:layout_constraintStart_toStartOf="parent"
                app:layout_constraintTop_toBottomOf="@+id/linearLayout2">

                <androidx.cardview.widget.CardView
                    android:layout_width="0dp"
                    android:layout_height="match_parent"
                    android:layout_margin="10dp"
                    android:layout_weight="1">

                    <RelativeLayout
                        android:layout_width="match_parent"
                        android:layout_height="match_parent">

                        <ImageView
                            android:id="@+id/iv4"
                            android:layout_width="75dp"
                            android:layout_height="75dp"
                            android:layout_centerHorizontal="true"
                            android:layout_marginTop="15dp"
                            app:srcCompat="@drawable/engg" />

                        <TextView
                            android:id="@+id/textView6"
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:layout_below="@id/iv4"
                            android:layout_centerHorizontal="true"
                            android:layout_marginTop="10dp"
                            android:fontFamily="@font/aclonica"
                            android:text="Engineering"
                            android:textSize="18sp" />
                    </RelativeLayout>
                </androidx.cardview.widget.CardView>

                <androidx.cardview.widget.CardView
                    android:layout_width="0dp"
                    android:layout_height="match_parent"
                    android:layout_margin="10dp"
                    android:layout_weight="1">

                    <RelativeLayout
                        android:layout_width="match_parent"
                        android:layout_height="match_parent">

                        <ImageView
                            android:id="@+id/iv5"
                            android:layout_width="75dp"
                            android:layout_height="75dp"
                            android:layout_centerHorizontal="true"
                            android:layout_marginTop="15dp"
                            app:srcCompat="@drawable/tech" />

                        <TextView
                            android:id="@+id/textView7"
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:layout_below="@id/iv5"
                            android:layout_centerHorizontal="true"
                            android:layout_marginTop="10dp"
                            android:fontFamily="@font/aclonica"
                            android:text="Technology"
                            android:textSize="18sp" />
                    </RelativeLayout>
                </androidx.cardview.widget.CardView>
            </LinearLayout>
        </androidx.constraintlayout.widget.ConstraintLayout>
    </ScrollView>

</androidx.drawerlayout.widget.DrawerLayout>

Please Help me find a solution to this. I am stuck in this for over a week now.

Deepfry answered 28/5, 2020 at 9:31 Comment(5)
It would seem that there is no <androidx.appcompat.widget.Toolbar> with ID toolbar in the current activity_home_page layout.Agar
E/AndroidRuntime: FATAL EXCEPTION: main Process: com.example.thinkerlab, PID: 3053 java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.thinkerlab/com.example.thinkerlab.HomePage}: java.lang.IllegalArgumentException: ID does not reference a View inside this Activity at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2517) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2577) at android.app.ActivityThread.access$1000(ActivityThread.java:166) Now showing this error I changed what you saidDeepfry
That's a completely different issue. Do you have a <fragment> with ID nav_host_fragment in your activity_home_page layout?Agar
No fragments in my activity_home_page layout. I have posted my xml file please help meDeepfry
There's not much more to tell. If you mean to be using the Navigation component in that Activity, then you need the above-mentioned <fragment> in its layout. Assuming you want the drawer always there, it would go in place of the <ScrollView>, which you would move to its own layout file for a separate Fragment. Otherwise, if you don't really mean to be using Navigation there, then get rid of all of that Java code.Agar
A
7

you are using this nav controller

 mNavController = findNavController(R.id.nav_host_fragment_activity_main)

you need to use this supportFragmentManager nav controller

    val navHostFragment =
   supportFragmentManager.findFragmentById(R.id.nav_host_fragment_activity_main) 
    as NavHostFragment
    // Passing each menu ID as a set of Ids because each
    // menu should be considered as top level destinations.
    mNavController = navHostFragment.navController

xml code looks like this

    <androidx.fragment.app.FragmentContainerView
    android:id="@+id/nav_host_fragment_activity_main"
    android:name="androidx.navigation.fragment.NavHostFragment"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    app:defaultNavHost="true"
    app:layout_constraintBottom_toTopOf="@id/nav_view"
    app:layout_constraintLeft_toLeftOf="parent"
    app:layout_constraintRight_toRightOf="parent"
    app:layout_constraintTop_toTopOf="parent"
    app:navGraph="@navigation/mobile_navigation" />
Amie answered 6/11, 2021 at 8:53 Comment(0)
C
5

I also encountered this problem when I used multi-module development. After investigation, I found that it was because I created an XML with the same name in another module. There is no in that XML, so change the name to solve it.

Chumash answered 30/7, 2020 at 8:37 Comment(1)
On a multi-module development project, there is no duplicate naming but I still have the problemShawanda
M
0

It's all about file naming. Recall what files have you added/replaced/renamed just recently and roll it back.

Motherofpearl answered 17/9, 2020 at 5:58 Comment(0)
J
0

Pass the FragmentContainer Id to the findNavController Method... or Choose Your FragmentContaier's id the same as NavHost's id...

this changing id. solved my problem!

Jordans answered 25/2 at 7:19 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.