2017-01-06 285 views
0

我試圖用工具欄替換ActionBar,但工具欄不顯示。我不明白爲什麼我的頁面在沒有工具欄的情況下仍然是空白的,我錯過了什麼?工具欄不會顯示在Xamarin.Android

我的風格:

<style name="MyThemeActionBar" parent="Theme.AppCompat.Light"> 
    <item name="windowActionBar">false</item> 
    <item name="windowNoTitle">true</item> 
    </style> 

我toolbar.axml:

<?xml version="1.0" encoding="utf-8"?> 
<android.support.v7.widget.Toolbar 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    android:id="@+id/toolbar" 
    android:layout_height="wrap_content" 
    android:minHeight="?attr/actionBarSize" 
    android:background="?attr/colorPrimary" 
    android:layout_width="match_parent"> 

    <TextView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:id="@+id/toolbartitile" 
    android:text="Kodej"/> 

</android.support.v7.widget.Toolbar> 

我的活動:

[Activity(Label = "MainLoginActivity" , Theme = "@style/MyThemeActionBar")] 
public class MainLoginActivity : AppCompatActivity 
{ 
    private ISharedPreferences sp; 
    private Android.Support.V7.Widget.Toolbar toolbar; 

    protected override void OnCreate(Bundle savedInstanceState) 
    { 
     base.OnCreate(savedInstanceState); 

     SetContentView(Resource.Layout.MainLogin); 

     toolbar = FindViewById<Android.Support.V7.Widget.Toolbar>(Resource.Id.toolbar); 
     SetSupportActionBar(toolbar); 

     sp = GetSharedPreferences(null, FileCreationMode.Private); 

     TextView tv = FindViewById<TextView>(Resource.Id.emailMain); 
     tv.Text = sp.GetString("email", null); 

     tv.Click += (object sender, EventArgs e) => 
     { 
      Android.Support.V7.App.AlertDialog.Builder ad = new Android.Support.V7.App.AlertDialog.Builder(this); 

      ad.SetTitle("Logout"); 
      ad.SetMessage("Are you sure you want to logout"); 

      ad.SetPositiveButton("Yes", (senderAlert, args) => 
      { 
       ISharedPreferencesEditor editor = sp.Edit(); 
       editor.Remove("email"); 
       editor.Apply(); 

       StartActivity(typeof(MainActivity)); 

       Finish(); 
      }); 

      ad.SetNegativeButton("Cancel", (senderAlert, args) => {}); 

      Dialog dialog = ad.Create(); 
      dialog.Show(); 
     }; 

    } 
} 

回答

1

我想問題可能是與代碼:

toolbar = FindViewById<Android.Support.V7.Widget.Toolbar>(Resource.Id.toolbar); 

既然你不發表您的MainLogin佈局的代碼,當您在MainLoginActivity代碼這一點,上下文是MainLoginActivity,你應該確保有一個Android.Support.V7.Widget.Toolbar其ID是toolbar存在於MainLogin佈局,否則,這將返回null,並且當您SetSupportActionBar(toolbar);時它不會拋出異常。

爲了解決這個問題,您可以:

  1. 移動佈局爲您ToolbarMainLogin佈局。

  2. 或保留Toolbar在你的工具欄佈局,但用它在你的MainLogin佈局例如像這樣:

MainLogin佈局:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 
    <include android:id="@+id/toolbar" 
      layout="@layout/mytoolbar" /> 
</LinearLayout> 
+0

不幸的是我已經忘了這個職位,但說你呢是正確的錯誤是,我忘了把它放在主登錄,但謝謝你(你只是瞭解我,我可以使用,所以謝謝你) – jgauthier

+0

@jgauthier,那麼如果這個答案有幫助,你可以請[mar k這個答案](http://stackoverflow.com/help/someone-answers)? –