我已经在官方论坛上问过这个问题,但还没有收到答案。
我目前正在尝试通过使用 Xamarin Android 的智能手机控制多个设备(灯、百叶窗、门、车库)来实现我的“智能家居”项目。我用 UDP 数据包控制我的设备。
我现在尝试从我的 Arduino 接收 UDP 数据包,以检查设备(例如灯)是打开还是关闭。为此,我使用了一个 Udplistener:
class UdpListener
{
private readonly UdpClient _udpClient = new UdpClient(4210);
public async void StartListening()
{
while (true)
{
var result = await _udpClient.ReceiveAsync();
var message = Encoding.ASCII.GetString(result.Buffer);
if (message.Contains("1"))
{
Licht.GlobalVariables.lampe1 = "1";
}
else
{
Licht.GlobalVariables.lampe1 = "0";
}
}
}
}
当我收到正确答案时,我将指示器设置为可见(在 onCreateView 中),这样我就可以在应用程序中看到灯是否打开/关闭。但这是我遇到的问题:仅当我重新加载片段时指示器才可见(这是有道理的,因为接收 UDP 数据包需要一些时间)。
一旦我收到 UDP 答案,有什么方法可以强制“刷新”我当前的片段(视图)?我发现的每个代码都没有被接受。
例如这个片段:
// Reload current fragment
Fragment frg = null;
frg = getSupportFragmentManager().findFragmentByTag("Your_Fragment_TAG");
final FragmentTransaction ft =
getSupportFragmentManager().beginTransaction();
ft.detach(frg);
ft.attach(frg);
ft.commit();