Android Chronometer有.start()和.stop(),但没有.get / setBase()

时间:2017-01-15 16:33:13

标签: c# android visual-studio xamarin mono

为VS15社区安装了xamarin

Class正在使用Android.Widget

Chronometer在Android.Widget.Chronometer

在第6行和第11行,我得到“不包含方法的定义”错误:

'Chronometer'不包含'setBase'的定义,也没有扩展方法'setBase'接受'Chronometer'类型的第一个参数(你是否缺少using指令或汇编引用?)

但Chronometer DOES定义了.Start()和.Stop()。为什么没有get / setBase?

无论其

Android Documentation注意到这些方法应该是小写的:.start()和.stop()

我不知道从哪里开始寻找参考/使用问题?

        Chronometer chrono = FindViewById<Chronometer>(Resource.Id.chronometer1);
        var chronoActionButton = FindViewById<Button>(Resource.Id.btnStopwatchController);
        chronoActionButton.Text = (!isRunning) ? Resources.GetString(Resource.String.stopwatchconrollerButton_text, "Start") : Resources.GetString(Resource.String.stopwatchconrollerButton_text, "Stop");
        chronoActionButton.Click += (object sender, System.EventArgs e) => {
            if (!isRunning) {
                chrono.setBase(SystemClock.ElapsedRealtime() + timeWhenStopped);
                isRunning = true;
                chronoActionButton.Text = Resources.GetString(Resource.String.stopwatchconrollerButton_text, "Stop");
                chrono.Start();
            } else {
                timeWhenStopped = chrono.getBase() - SystemClock.ElapsedRealtime();
                isRunning = false;
                chronoActionButton.Text = Resources.GetString(Resource.String.stopwatchconrollerButton_text, "Start");
                chrono.Stop();
            }
        };

2 个答案:

答案 0 :(得分:1)

Xamarin通常将方法和属性名称转换为更标准的C#约定 - 混合大小写而不是低级大小,并使用属性名称而不是get / set方法。

因此getBase和setBase只被转换为带有getter和setter的单个Base属性。

请参阅:https://developer.xamarin.com/api/type/Android.Widget.Chronometer/

答案 1 :(得分:1)

Chronometer具有Base属性。因此,您只需键入chrono.GetBase()

,而不是chrono.Base