不能在Xamarin.Android

问题描述:

创建动作条我试图创建actionbar背部按钮,但它不显示不能在Xamarin.Android

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

public override bool OnOptionsItemSelected(IMenuItem item) { 
    this.Finish(); 
    return base.OnOptionsItemSelected(item); 
} 

这是动作条xml文件:

<menu xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:id = "@+id/actionBack" 
     android:icon ="@drawable/arrow_l_black" 
     android:title="Back" 
     android:showAsAction="always" /> 
</menu> 

上午我遗漏了什么?

+0

你确定,你在膨胀正确的资源吗?不应该是Resource.Menu.actionbar? – Stam 2014-10-07 08:25:37

+0

但xml文件名是ActibarMenu。 http://i.imgur.com/21Kzzig.png – arsena 2014-10-07 08:33:05

+0

您是否正在使用硬件菜单按钮在设备上进行测试?如果你按下它会发生什么? – Cheesebaron 2014-10-07 11:22:41

如果你只是想显示后退按钮,并且您使用API​​ 14+,那么你可以简单地这样做:

[Activity(Label = "Main", MainLauncher = true, Icon = "@drawable/icon")] 
public class MainActivity : Activity 
{ 
    protected override void OnCreate(Bundle bundle) 
    { 
     base.OnCreate(bundle); 

     // Set our view from the "main" layout resource 
     SetContentView(Resource.Layout.Main); 

     var button = FindViewById<Button>(Resource.Id.MyButton); 
     button.Click += (sender, args) => 
     { 
      var intent = new Intent(this, typeof (SecondActivity)); 
      StartActivity(intent); 
     }; 
    } 
} 

[Activity(Label = "Second", ParentActivity = typeof(MainActivity))] 
public class SecondActivity : Activity 
{ 
    protected override void OnCreate(Bundle savedInstanceState) 
    { 
     base.OnCreate(savedInstanceState); 

     ActionBar.SetDisplayShowHomeEnabled(true); 
    } 

    public override bool OnOptionsItemSelected(IMenuItem item) 
    { 
     switch (item.ItemId) 
     { 
      case Android.Resource.Id.Home: 
       NavigateUpTo(ParentActivityIntent); 
       break; 
     } 

     return base.OnOptionsItemSelected(item); 
    } 
} 

所以会发生什么是MainActivity按下按钮时启动SecondActivity。在SecondActivityOnCreate中,您要求显示后退按钮。然后在OnOptionsItemSelected您等待Android.Resource.Id.Home是按下的项目的ID。这是后退按钮的默认ID。发生这种情况时,您可以调用内置的NavigateUpTo方法(在使用支持v4的API级别较低时在NavUtils中)告诉Activity导航至Activity属性标志中设置的ParentActivity

ParentActivity通过MetaData属性标志设置上比API 14,API水平较低,像这样:

[Activity(...)] 
[MetaData("android.support.PARENT_ACTIVITY", Value = "app9.MainActivity")] 
public class SecondActivity : Activity { ... } 

app9是我的命名空间小写。

使用OnCreateOptionsMenu从XML文件充气菜单用于创建其他ActionBar项目。在这种情况下,它会在右侧创建一个按钮,并带有向后箭头或您定义的@drawable/arrow_l_blackDrawable

+0

我会检查一下,谢谢你的回答。 – arsena 2014-10-07 16:21:09