2017-06-06 45 views
1

我正在對導航標題執行操作,其中有一個名爲「登錄用戶」的文本。 「登錄用戶」文本位於名爲navheader的佈局文件中。在導航標題上執行操作 - Xamarin

在我的主頁(主要活動),是我想要執行活動的地方。當我抽出抽屜式導航欄,然後點擊 「登錄的用戶」,我得到拋出Object reference not set to an instance of an object.

nav_header.axml

<TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="LOG IN" 
     android:textAppearance="@style/TextAppearance.AppCompat.Body1" 
     android:textColor="#FFFFFF" 
     android:textSize="16dp" 
     android:id="@+id/login"/> 

主要Activity.cs

loginUser = FindViewById<TextView>(Resource.Id.login); 

loginUser.Click += login_User; 

private void login_User(object sender, EventArgs e) 
    { 
     Intent intent = new Intent(this, typeof(loginPage)); 
     this.StartActivity(intent); 


    } 
異常
+0

你的MainActivity.cs文件的OnCreate方法是怎樣的? – apineda

回答

2

如果您使用的是android.support.design.widget.NavigationView,您不能直接訪問MainActivity的標題視圖中的視圖,因爲您的標題視圖不是將您的xml代碼的一部分直接指定爲MainActivity。你將不得不這樣做:

var navigationView = FindViewById<NavigationView>(Resource.Id.nav_view); //whatever your Id for navigationview is 
var headerView = navigationView.GetHeaderView(0); 
var loginUser = headerView.FindViewById<TextView>(Resource.Id.login); 

loginUser.Click += login_User; 

private void login_User(object sender, EventArgs e) 
{ 
    Intent intent = new Intent(this, typeof(loginPage)); 
    this.StartActivity(intent); 
} 
+0

哦,魔術工作!!!!!謝謝。所以GetHeaderView(0)就像一個索引? – XamarinDevil

+0

太棒了!不客氣!是。 – Yupi