我想同时更新 Watch 上两个 TextView 中的文本。
main_layout.xml
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
>
<TextView
android:id="@+id/text1"
android:layout_width="220px"
android:layout_height="50px"
/>
<TextView
android:id="@+id/text2"
android:layout_width="220px"
android:layout_height="50px"
/>
</LinearLayout>
现在我这样做:
sendText(R.id.text1, "Hello world 1");
sendText(R.id.text2, "Hello world 2");
问题是,我可以在 Watch 上看到,第一个文本设置得较早,然后是第二个。我想避免这种情况。
通常,Sony-SDK 支持捆绑包中的数据更新,例如在显示布局时:
Bundle b1 = new Bundle();
b1.putInt(Control.Intents.EXTRA_LAYOUT_REFERENCE, R.id.text1);
b1.putString(Control.Intents.EXTRA_TEXT, "Hello world 1");
Bundle b2 = new Bundle();
b2.putInt(Control.Intents.EXTRA_LAYOUT_REFERENCE, R.id.text2);
b2.putString(Control.Intents.EXTRA_DATA_URI, "Hello world 2");
Bundle[] layoutData = new Bundle[] { b1, b2 };
showLayout(R.layout.main_layout, layoutData);
但在这种情况下,布局被重新设置,这在我的情况下不太好,因为屏幕上的其他一些视图可能已经改变了。
我希望,有可能通过以下方式实现这一目标:
Bundle bundle = new Bundle();
bundle.putInt(Control.Intents.EXTRA_LAYOUT_REFERENCE, R.id.text2);
bundle.putString(Control.Intents.EXTRA_TEXT, "Hello world 2");
Intent intent = new Intent(Control.Intents.CONTROL_SEND_TEXT_INTENT);
intent.putExtra(Control.Intents.EXTRA_LAYOUT_REFERENCE, R.id.text1);
intent.putExtra(Control.Intents.EXTRA_TEXT, "Hello world 1");
intent.putExtra(Control.Intents.EXTRA_LAYOUT_DATA, new Bundle[] { bundle });
sendToHostApp(intent);
但不幸的是,Watch 似乎忽略了 CONTROL_SEND_TEXT_INTENT 意图的 EXTRA_LAYOUT_DATA。
所以我的问题是:是否有可能在不重新设置布局的情况下将文本更新作为捆绑发送?