0

我对在智能手表中接收价值有疑问。目前我从这个问题按照这个步骤

实际上,提出问题的人有答案,但由于我的评论声誉不够,所以我不能在他/她的问题中逐个提问。

现在,根据回答问题的人 Eir 先生。我对他的回答有疑问:

您还想将一些参数传递给您的扩展,即您提到的字符串。这可能有点棘手;通常,您会在 Intent 本身中传递该字符串,作为额外的,但在这里,这是不可用的。您需要将该信息(字符串)保存在您的扩展程序也可以访问的位置。因此,如果您的 Activity 和您的扩展程序是同一个应用程序的一部分,则该位置可以是应用程序首选项:活动将值保存在首选项中,扩展程序从相同的首选项中读取它并将其显示在智能手表或其他设备上。

他说我可以将值保存在首选项中,扩展程序从相同的首选项中读取它并将其显示在 SmartWatch 上。不幸的是,我不知道扩展是如何读取它的。我尝试将值放在 samplepreferenceactivity 中:

@Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);

            SharedPreferences settings = getSharedPreferences("SHARED_PREFS_FILE",0);
            String message = settings.getString("send", "message");

  }

我不知道如何将值放入 controlextension 类中,如果可以放入,我希望您用于更改"Hello watch". 您可以在下面找到 controlextension 类:

public class HelloWatchExtension extends ControlExtension{
   ...
  public HelloWatchExtension(Context context, String hostAppPackageName) {
        super(context, hostAppPackageName);

        width = getSupportedControlWidth(context);
        height = getSupportedControlHeight(context);

        layout = new RelativeLayout(context);
        textView = new TextView(context);
        textView.setText("Hello watch!");
        textView.setTextSize(9);
        textView.setGravity(Gravity.CENTER);
        textView.setTextColor(Color.WHITE);
        textView.layout(0, 0, width, height);
        layout.addView(textView);
    }

由于不是活动,所以无法使用getpreference来获取。有人知道怎么做吗?

4

2 回答 2

0

如果您只是想在项目中的 Activity 和 ControlExtension 之间传递字符串,则不需要使用 SharedPreferences。最简单的方法是在你的扩展中注册一个动态的 BroadcastReceiver 并从 Activity 中广播一个 Intent 并在 Intent 中传递你的字符串。

于 2013-09-27T16:51:31.263 回答
0

“既然不是activity,所以不能用getpreference来取。有人知道怎么做吗?”

您可以通过上下文访问首选项: context.getApplicationContext().getSharedPreferences(...);

关于使用共享首选项的一些提示:

SharedPreferences 首选项 = _context。getApplicationContext().getSharedPreferences("com.example.AppName", Context.MODE_MULTI_PROCESS);

将字符串放入共享首选项中:

_preferences.edit().putString(“OBJECT”, “object_name”).commit();

从共享首选项中检索字符串:

_preferences.getString("OBJECT", "default_name");

于 2013-10-09T08:50:46.570 回答