Reputation: 73
I have a navigation menu inside drawer layout with menu and header defined. My navigation view is showing header but not menu items. I am not able to see anything from navigation_menu.xml. Please can you help me in resolving this issue?
This is Android Studio with Java
**Activity File **
<?xml version="1.0" encoding="utf-8"?>
<androidx.drawerlayout.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/activity_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@android:color/holo_green_dark">
<LinearLayout
android:id="@+id/mylayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#4030e8"
android:gravity="start"
android:orientation="vertical"
android:paddingLeft="24dp"
android:paddingTop="24dp"
android:paddingRight="24dp"
tools:context=".MainActivity">
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="2dp"
android:layout_marginBottom="2dp"
android:orientation="horizontal">
<TextView
android:id="@+id/sourceInfo"
android:layout_width="144dp"
android:layout_height="wrap_content"
android:text="Source"
android:textSize="12sp" />
<Space
android:layout_width="135dp"
android:layout_height="wrap_content"
android:layout_weight="1" />
<RadioGroup
android:id="@+id/sourceGroup"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal">
<RadioButton
android:id="@+id/tc"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:checked="false"
android:text="Main Centre"
android:textSize="12sp" />
<RadioButton
android:id="@+id/rc"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:checked="false"
android:text="Sub Centre"
android:textSize="12sp" />
</RadioGroup>
</LinearLayout>
<Space
android:layout_width="match_parent"
android:layout_height="5dp" />
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:id="@+id/checktime"
android:layout_width="138dp"
android:layout_height="wrap_content"
android:text="Time"
android:textSize="12sp" />
<Space
android:layout_width="5dp"
android:layout_height="wrap_content"
android:layout_weight="1" />
<EditText
android:id="@+id/toatext"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:ems="10"
android:enabled="true"
android:inputType="text"
android:textSize="12sp"
android:visibility="visible" />
</LinearLayout>
<Space
android:layout_width="match_parent"
android:layout_height="5dp" />
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:id="@+id/enter_age"
android:layout_width="81dp"
android:layout_height="wrap_content"
android:text="Age"
android:textSize="12sp" />
<Space
android:layout_width="65dp"
android:layout_height="wrap_content"
android:layout_weight="1" />
<Spinner
android:id="@+id/ageSpinner"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
<Space
android:layout_width="match_parent"
android:layout_height="5dp" />
<LinearLayout
android:layout_width="311dp"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:id="@+id/GenderLabel"
android:layout_width="144dp"
android:layout_height="wrap_content"
android:text="Gender"
android:textSize="12sp" />
<Space
android:layout_width="135dp"
android:layout_height="wrap_content"
android:layout_weight="1" />
<RadioGroup
android:id="@+id/GenderGroup"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal">
<RadioButton
android:id="@+id/f"
android:layout_width="85dp"
android:layout_height="wrap_content"
android:checked="true"
android:text="Female"
android:textSize="12sp" />
<RadioButton
android:id="@+id/m"
android:layout_width="105dp"
android:layout_height="wrap_content"
android:checked="false"
android:text="Male"
android:textSize="12sp" />
</RadioGroup>
</LinearLayout>
<Space
android:layout_width="match_parent"
android:layout_height="5dp" />
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="2dp"
android:layout_marginBottom="2dp"
android:orientation="horizontal">
<Button
android:id="@+id/saveData"
android:layout_width="78dp"
android:layout_height="34dp"
android:onClick="save"
android:text="Save"
android:textAllCaps="false"
android:textSize="12sp" />
<Button
android:id="@+id/closeData"
android:layout_width="wrap_content"
android:layout_height="34dp"
android:onClick="closePatients"
android:text="Close"
android:textAllCaps="false"
android:textSize="12sp" />
</LinearLayout>
<Space
android:layout_width="wrap_content"
android:layout_height="5dp" />
</LinearLayout>
<com.google.android.material.navigation.NavigationView
android:layout_width="match_parent"
android:layout_height="match_parent"
app:menu="@menu/navigation_menu"
android:layout_gravity="start"
app:headerLayout="@layout/nav_header"
android:id="@+id/nv">
</com.google.android.material.navigation.NavigationView>
</androidx.drawerlayout.widget.DrawerLayout>
Header file (nav_header.xml)
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/colorPrimaryDark">
<TextView
android:id="@+id/targetNumber"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Target Number"
android:textSize="12sp" />
<Space
android:layout_width="5dp"
android:layout_height="wrap_content"
android:layout_weight="1" />
<EditText
android:id="@+id/tarText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:ems="10"
android:enabled="true"
android:inputType="text"
android:textSize="12sp"
android:visibility="visible" />
<Space
android:layout_width="5dp"
android:layout_height="wrap_content"
android:layout_weight="1" />
<EditText
android:id="@+id/rollText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:ems="10"
android:enabled="true"
android:inputType="text"
android:textSize="12sp"
android:visibility="visible" />
</LinearLayout>
Menu XML (navigation_menu.xml)
<?xml version="1.0" encoding="utf-8"?>
<menu 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"
tools:showIn="nv"
>
<options android:id="@+id/home"
android:title="Home"/>
<options android:id="@+id/team"
android:title="Team"/>
<options android:id="@+id/images"
android:title="Images"/>
<options android:id="@+id/audit"
android:title="Audit"/>
<options android:id="@+id/settings"
android:title="Settings"/>
</menu>
Java code
import androidx.annotation.NonNull;
import androidx.appcompat.app.ActionBarDrawerToggle;
import androidx.appcompat.app.AppCompatActivity;
import androidx.drawerlayout.widget.DrawerLayout;
import android.app.ActionBar;
import android.app.LauncherActivity;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.util.Log;
import android.view.MenuItem;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.List;
import com.google.android.material.navigation.NavigationView;
public class MainActivity extends AppCompatActivity {
private DrawerLayout D1;
private ActionBarDrawerToggle t;
private NavigationView nvs;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
D1=(DrawerLayout) findViewById(R.id.activity_main);
t=new ActionBarDrawerToggle(this,D1,R.string.Open, R.string.Close);
D1.addDrawerListener(t);
t.syncState();
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setHomeButtonEnabled(true);
final callActivity ca = new callActivity();
nvs = (NavigationView)findViewById(R.id.nv);
nvs.inflateMenu(R.menu.navigation_menu);
nvs.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem options) {
int val = options.getItemId();
switch(val)
{
case R.id.home:
ca.showActivity(MainActivity.class, false);
case R.id.team:
Log.d("Wait","Wait");
case R.id.images:
ca.showActivity(imageActivity.class, false);
case R.id.audit:
Log.d("Wait","Wait");
case R.id.settings:
ca.showActivity(configurationActivity.class, false);
}
return true;
}
});
}
@Override
public boolean onOptionsItemSelected(MenuItem options) {
if(t.onOptionsItemSelected(options))
{
return true;
}
return super.onOptionsItemSelected(options);
}
}
Upvotes: 1
Views: 1095
Reputation: 1581
Try using <item>
instead of <options>
<?xml version="1.0" encoding="utf-8"?>
<menu 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"
tools:showIn="nv"
>
<item android:id="@+id/home"
android:title="Home"/>
<item android:id="@+id/team"
android:title="Team"/>
<item android:id="@+id/images"
android:title="Images"/>
<item android:id="@+id/audit"
android:title="Audit"/>
<item android:id="@+id/settings"
android:title="Settings"/>
</menu>
You can also do it programmatically by removing your menu inflater nvs.inflateMenu
and then add this in your menu layout file.
<com.google.android.material.navigation.NavigationView
android:id="@+id/nv"
android:layout_width="wrap_content"
android:layout_height="match_parent"
app:menu="@menu/navigation_menu"
app:headerLayout="@layout/nav_header"/>
Upvotes: 1