我正在尝试用工具栏替换ActionBar
,但工具栏没有显示。我不明白为什么没有工具栏我的页面仍然是空白的,我缺少什么?
我的风格:
<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();
};
}
}
答案 0 :(得分:2)
我认为问题可能在于代码:
toolbar = FindViewById<Android.Support.V7.Widget.Toolbar>(Resource.Id.toolbar);
由于您未发布MainLogin
布局的代码,因此当您在MainLoginActivity
中对此代码进行编码时,上下文为MainLoginActivity
,您应该确保有Android.Support.V7.Widget.Toolbar
{1}} toolbar
布局中存在哪个ID为MainLogin
,否则会返回null
,并且SetSupportActionBar(toolbar);
时不会引发异常。{1}}
要解决此问题,您可以:
将Toolbar
的布局移至MainLogin
布局。
或者将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>