【问题标题】:Error: 'Spinner' does not contain a definiton for getSelectedItem'...'错误:“微调器”不包含获取所选项目“...”的定义
【发布时间】:2018-01-03 23:00:15
【问题描述】:

我需要从微调器中取出所选项目,但出现上述错误,我不知道为什么。

因此,如果可能的话,我希望在不调用微调器的事件处理程序的情况下获取微调器选定的项目,因为我需要在单击按钮时使用它。

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

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

        Button bt_ok = FindViewById<Button>(Resource.Id.bt_ok);
        Spinner spinner = (Spinner)FindViewById<Spinner>(Resource.Id.dd_spinner);

         //
         //getSelectedItem does not contain a definition!!!
         //
        String spinner_text = spinner.getSelectedItem().toString();

         //
         //Do I need this? 
         //
        spinner.ItemSelected += new EventHandler<AdapterView.ItemSelectedEventArgs>(spinner_ItemSelected);


        var adapter = ArrayAdapter.CreateFromResource(
                this, Resource.Array.planet_array, global::Android.Resource.Layout.SimpleSpinnerItem);
        adapter.SetDropDownViewResource(global::Android.Resource.Layout.SimpleSpinnerDropDownItem);
        spinner.Adapter = adapter;

        bt_ok.Click += delegate
        {

            AlertDialog.Builder builder = new AlertDialog.Builder(this);
            builder.SetTitle("Confirm");

            //
            //I need the value here!!!
            //
            builder.SetMessage(new Confirm().Choice(spinner_text));


            builder.SetCancelable(true);
            builder.SetPositiveButton("Yes", delegate { });
            builder.Show();
        };
    }

我尝试了thisthis 的答案,但无法正常工作。

【问题讨论】:

  • 您应该考虑熟悉the Xamarin documentation。扫描 API 文档可以帮助您找出 Android Java API 和 Xamarin C# API 之间的这些差异。

标签: android xamarin android-spinner


【解决方案1】:

Xamarin.Android 中的 Java getSelectedItem 方法被转换为 C# 只读属性 (SelectedItem):

var spinner = FindViewById<Spinner>(Resource.Id.dd_spinner);
var selectedItem = spinner.SelectedItem;

【讨论】:

  • 它返回空值。微调器正在加载一切正常,但是当我单击按钮时,它现在正在破坏应用程序。
  • 你在使用你的标识符吗? Resource.Id.dd_spinner我输入了一个通用的,但编辑为使用你的代码中的一个....
  • 是的.. 这是我的代码... Spinner spinner = (Spinner)FindViewById(Resource.Id.dd_spinner); var spinner_text = spinner.SelectedItem;
  • 当我将第二行移到按钮单击块时它起作用了。非常感谢!
  • @Lucas Ahh.. SelectedItem 因此spinner_text 将返回 null,直到您为其设置值(默认值或通过用户选择)
猜你喜欢
  • 2011-08-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多