TextView 不显示分配给文本的字符串 属性

TextView not displaying the string assigned to the Text property

我有一个 TextView 定义如下:

<TextView
        android:id="@+id/middleText"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:text="Click the mail button" />

我得到了这样的参考:

    private TextView _textView;

    protected override void OnCreate(Bundle savedInstanceState)
    {
        base.OnCreate(savedInstanceState);
        Xamarin.Essentials.Platform.Init(this, savedInstanceState);
        SetContentView(Resource.Layout.activity_main);

        _textView = FindViewById<TextView>(Resource.Id.middleText);

单击视图中的按钮时,将运行以下代码:

        if (_accelerometerController.IsStarted)
        {
            _accelerometerController.Stop();
            _timer?.Stop();
            _timer?.Dispose();
            _timer = null;
        }
        else
        {
            _accelerometerController.Start();
            _timer = new Timer(1000);
            _timer.Elapsed += Timer_Elapsed;
            _timer.AutoReset = true;
            _timer.Enabled = true;
        }

当调用 _timer.Elapsed 事件时,运行以下代码:

    private void Timer_Elapsed(object sender, ElapsedEventArgs e)
    {
        //MainThread.BeginInvokeOnMainThread(() => _textView.Text = _accelerometerController.Status);
        //_textView.SetText(_accelerometerController.Status, TextView.BufferType.Normal);
        //RunOnUiThread(() => _textView.Text = _accelerometerController.Status);
        _textView.Text = _accelerometerController.Status;
        _textView.Invalidate();
    }

_textView.Text 属性 设置正确,但图形大部分时间不会更新以显示新字符串。一旦应用程序选择不更新图形,它就不会恢复,文本似乎永远都是一样的,调试时我可以看到文本 属性 设置正确,其他控件继续工作。 我试过用多种不同的方式设置文本,但都产生了相同的结果。

我是 Xamarin 的新手,我不确定项目类型,我为此项目选择了“Android App (Xamarin)”项目模板,我不确定是否与 Xamarin.Forms.

相同或包括 Xamarin.Forms.

为什么会这样?我该如何解决?

如果你使用Xamarin.Android项目,可以参考下面的代码。

布局:

<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
    android:id="@+id/middleText"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerInParent="true"
    android:text="Click the mail button" />
<Button
    android:id="@+id/button1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"/>
</LinearLayout>

Activity:由于不知道_accelerometerController是什么,直接启动定时器

  public class Activity8 : Activity
{
    private TextView _textView;
    private Button button;

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

        // Create your application here

        SetContentView(Resource.Layout.layout8);
        _textView = FindViewById<TextView>(Resource.Id.middleText);
        button = FindViewById<Button>(Resource.Id.button1);

        button.Click += Button_Click;

    }

    private void Button_Click(object sender, EventArgs e)
    {
        Timer _timer = new Timer(1000);
        _timer.Elapsed += Timer_Elapsed;
        _timer.AutoReset = true;
        _timer.Enabled = true;
    }
    private void Timer_Elapsed(object sender, ElapsedEventArgs e)
    {
        //MainThread.BeginInvokeOnMainThread(() => _textView.Text = _accelerometerController.Status);
        //_textView.SetText(_accelerometerController.Status, TextView.BufferType.Normal);
        //RunOnUiThread(() => _textView.Text = _accelerometerController.Status);
        _textView.Text = "Hello";
        _textView.Invalidate();
    }
}