2016-05-02 8 views
1

Ich bin neu mit Xamarin, aber ich trainiere durch die Erstellung von Park-Anwendung. Jetzt habe ich Probleme, indem ich versuche, auf ein anderes Layout zuzugreifen.Xamarin, wie ein anderes Layout zu öffnen, indem Sie auf neue Ressourcen-Layout

Das ist mein MainActivity.cs

[Activity(Label = "CustomActionBarParking", MainLauncher = true, Icon = "@drawable/icon", Theme ="@style/CustomActionBarTheme")] 
     public class MainActivity : Activity 
     { 
    private LinearLayout mBarZone; 
      protected override void OnCreate(Bundle bundle) 
      { 
       base.OnCreate(bundle); 
       ActionBar.SetDisplayShowCustomEnabled(true); 
       SetContentView(Resource.Layout.action_bar); 
       mBarZone = FindViewById<LinearLayout>(Resource.Id.linearLayout2); 
       mBarZone.Click += (object sender, EventArgs args) => 
       { 
        SetContentView(Resource.Layout.zones_list); 
       }; 
    }}} 

Hier habe ich von meinem Menü am Zugriff durch Klicken auf „Zonen“ Aktionsleiste. Und öffnen Sie "Zonenliste" Layout.

Von hier möchte ich auf ein anderes Layout zugreifen: vehicle_not_parked durch Klicken auf blaue Zone Aktionsleiste. Aber ich weiß nicht, wo ich es initialisieren muss, denn als ich das in der MainActivity-Klasse mit der OnCreate-Methode initialisierte, bekam ich den Fehler, dass mein Objekt nullbar ist. Dann erstelle ich ZonesActivity.cs die wie folgt aussieht:

[Activity(Label = "CustomActionBarParking")] 
    public class ZonesActivity : Activity 
    { 
     private LinearLayout mBlueZone; 
     protected override void OnCreate(Bundle savedInstanceState) 
     { 
      base.OnCreate(savedInstanceState); 
      SetContentView(Resource.Layout.zones_list); 
      mBlueZone = FindViewById<LinearLayout>(Resource.Id.linearLayout2); 
      mBlueZone.Click += (object sender, EventArgs args) => 
      { 
       SetContentView(Resource.Layout.vehicle_not_parked); 

      }; 

     }}} 

Aber wenn ich diese Klasse in Hauptaktivitätsklasse nennen tryed muss ich mit Bundle savedInstanceState Eigenschaft beschäftigen. Ich weiß nicht wirklich wie ich das aus einer Sicht sehen kann -> 2. Sicht und dann -> 3. Sicht.

Antwort

1

Wenn ich Sie richtig verstehe, tauschen Sie die Layouts im Button Click Event aus? Ich denke, es wäre am besten, eine neue Aktivität

mBarZone.Click += delegate { 
     StartActivity(typeof(ZonesActivity)); 
}; 

Docs on starting a new activity

+0

ja ich tauschen zu starten. Wo muss ich diese Aktivität beginnen? Bei MainActivity Klasse in OnCreate() -Methode? Weil ich beim Initialisieren dieser Aktivität einen Fehler erhalten habe, als ich auf die Layout-Aktionsleiste getippt habe, um die Ansicht vehicle_not_parked zu erhalten. : System.NullReferenceException: Objektreferenz nicht auf eine Instanz eines Objekts festgelegt – BinaryTie

+0

Werfen Sie einen Blick auf diese Beispielanwendung https://developer.xamarin.com/guides/android/getting_started/hello,android_multiscreen/hello,android_multiscreen_quickstart/ und wie die App startet die Call-History-Aktivität https://github.com/xamarin/monodroid-samples/blob/master/PhonewordMultiscreen/Phoneword/MainActivity.cs#L50 –

+0

Entweder das oder einen Blick auf diese https://github.com/ Xamarin/Monodroid-Proben/Blob/Master/PhonewordMultiscreen/Phoneword/MainActivity.cs # L50 es verwendet eine Aktionsleiste und Fragmente –

Verwandte Themen