【问题标题】:Set value in ControlExtension in Smartwatch在 Smartwatch 的 ControlExtension 中设置值
【发布时间】:2013-09-27 06:25:55
【问题描述】:

我对智能手表的接收价值有疑问。目前我从这个question开始按照这个步骤进行操作

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

现在,根据回答问题的 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);
    }

由于不是activity,所以不能通过getpreference来获取。有人知道怎么做吗?

【问题讨论】:

    标签: android sony sony-smartwatch


    【解决方案1】:

    “因为不是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”);

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-31
      相关资源
      最近更新 更多