2017-10-26 2 views
0

Ich bin neu auf Xamarin bekommen, tatsächlich auf Android-Menü ich arbeite, aber ich habe ein Problem, den Element-ID zu erhalten und Aktivität für jedes Element zu starten:XAMARIN.android - id Artikel Menü

MainActivity CS-

[Activity(Label = "sofis3", MainLauncher = true, Icon = "@mipmap/icon", Theme = "@style/Theme.DesignDemo")] 
    public class MainActivity : AppCompatActivity 
    { 

     DrawerLayout drawerLayout; 
     NavigationView navigationView; 

     protected override void OnCreate(Bundle savedInstanceState) 
     { 
      base.OnCreate(savedInstanceState); 
      SetContentView(Resource.Layout.Main); 

      var toolbar = FindViewById<V7Toolbar>(Resource.Id.toolbar); 
      SetSupportActionBar(toolbar); 
      SupportActionBar.SetDisplayHomeAsUpEnabled(true); 
      SupportActionBar.SetDisplayShowTitleEnabled(false); 
      SupportActionBar.SetHomeButtonEnabled(true); 
      SupportActionBar.SetHomeAsUpIndicator(Resource.Mipmap.ic_menu); 
      drawerLayout = FindViewById<DrawerLayout>(Resource.Id.drawer_layout); 
      navigationView = FindViewById<NavigationView>(Resource.Id.nav_view); 

     } 

     public override bool OnOptionsItemSelected(IMenuItem item) 
     { 
      Intent intent = null; 

      //Console.WriteLine("ID = " + item.ItemId); 

      switch (item.ItemId) 
      { 
       case Android.Resource.Id.Home: 
        drawerLayout.OpenDrawer(Android.Support.V4.View.GravityCompat.Start); 
        break; 

       case Android.Resource.chi_siamo : 
        intent = new Intent(this, typeof(ChiSiamoActivity)); 
        break; 

       case Android.Resource.Id.nostro_centro: 
        intent = new Intent(this, typeof(NostroCentroActivity)); 
        break; 

       case Android.Resource.Id.servizi_paziente: 
        intent = new Intent(this, typeof(ServiziPazienteActivity)); 
        break; 

       case Android.Resource.Id.my_sofis: 
        intent = new Intent(this, typeof(MySofisActivity)); 
        break; 

       case Android.Resource.Id.contatti: 
        intent = new Intent(this, typeof(ContattiActivity)); 
        break; 

       case Android.Resource.Id.lavora_con_noi: 
        intent = new Intent(this, typeof(LavoraConNoiActivity)); 
        break; 

       default://invalid option 
        return base.OnOptionsItemSelected(item); 
      } 

      if (intent != null) 
      { 
       StartActivity(intent); 
      } 

      return base.OnOptionsItemSelected(item); 
     } 

ich habe zwei Haupt Layouts:

Layout/Main.axml
Layout/menu/menu.xml

menu.xml

<?xml version="1.0" encoding="utf-8"?> 
<menu 
    xmlns:android="http://schemas.android.com/apk/res/android"> 
    <group android:checkableBehavior="single"> 
     <item 
      android:id="@+id/chi_siamo" 
      android:title="CHI SIAMO" 
     /> 
     <item 
      android:id="@+id/nostro_centro" 
      android:title="Il NOSTRO CENTRO" /> 
     <item 
      android:id="@+id/servizi_paziente" 
      android:title="SERVIZI PER IL PAZIENTE" /> 

     <item 
      android:id="@+id/my_sofis" 
      android:title="MY SOFIS" /> 

     <item 
      android:id="@+id/contatti" 
      android:title="CONTATTI" /> 

     <item 
      android:id="@+id/lavora_con_noi" 
      android:title="LAVORA CON NOI" /> 
    </group> 
</menu> 

Das Problem ist, dass "Fall Android.Resource.chi_siamo" erhalten nicht die ID, so kann ich nicht spezifische Aktivität starten.

Wie kann ich ID-Namen bekommen und validieren? Vielen Dank für Ihre Hilfe!

Antwort

1

Zu allererst Ihre menu.xml Datei im folgenden Verzeichnis vorhanden sein sollten:

Resources -> menu -> menu.xml 

nicht innen Resources -> layout.

Erstellen Sie das Menü:

public override bool OnCreateOptionsMenu(IMenu menu) 
{ 
    MenuInflater.Inflate(Resource.Menu.menu, menu); 
    return base.OnCreateOptionsMenu(menu); 
} 

und dann Android entfernen und Id hinzufügen Zeile:

case Android.Resource.chi_siamo : 

wie:

case Resource.Id.chi_siamo : 

entfernen Android von allen anderen switch Fällen als Gut.