0

尽管进行了很多搜索,但我找不到可能是一个非常简单的问题的答案。

我有一个创建弹出窗口的方法。然后我需要访问弹出窗口 XML 的 TextViews 并更改文本。问题是我的 textView 返回 null ,因此当我尝试在底部调用的方法 countDown(); 中设置文本时给我一个 null ref 异常;

这是在活动中运行的,而不是在片段中运行的。我了解 null ref 异常的原则,但无法弄清楚这里发生了什么或如何解决它。

这是该方法的代码:

public void clockPopup()
   {

    LayoutInflater inflater = (LayoutInflater)this.GetSystemService(Context.LayoutInflaterService);

    View myPopup = inflater.Inflate (Resource.Layout.PopUpClockTimer, null); 

    offerExpired = FindViewById<TextView> (Resource.Id.offer_expired); //returns null
    timerDigit = FindViewById<TextView> (Resource.Id.test_timer); //returns null

    PopupWindow popup = new PopupWindow (myPopup, ViewGroup.LayoutParams.WrapContent, ViewGroup.LayoutParams.WrapContent, true);
    popup.ShowAtLocation (myPopup, GravityFlags.Center, 0,0);
    popup.Update ();


    RunOnUiThread (() => {
        countDown ();
    });


    }

这是我试图访问的 TextViews 的 xml

 <TextView
         android:id="@+id/test_timer"
         android:layout_width="fill_parent"
         android:layout_height="wrap_content"
         android:textSize="30sp"/>
 <TextView
         android:id="@+id/offer_expired"
         android:layout_width="fill_parent"
         android:layout_height="wrap_content"
         android:textSize="30sp"/>

任何帮助表示赞赏。

4

1 回答 1

0

您的 FindViewById 在错误的父项中搜索。这应该可以解决问题:

myPopup.FindViewById<TextView>
于 2014-10-14T09:00:42.673 回答