Sony Smartwatch - 同时更新多个TextView中的文本

时间:2013-10-16 11:50:35

标签: android sony sony-smartwatch

我想同时更新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。

所以我的问题是:是否有可能在不重新设置布局的情况下将文本更新作为一个包发送?

1 个答案:

答案 0 :(得分:0)

你做得对。更新整个屏幕将是最好的方法,只需更新同时可能已更改的所有其他字段。