У меня есть лицо Android Wear, созданное интерактивным способом. На лице у меня есть область сетки, где я слушаю для onTapCpmmand:Android Wear, передающие данные от Activity back to watchface
else if (x >= x6 & x <= x9 & y >= (y5 - (gridYUnit/2)) & y <= (y8 - (gridYUnit/2))) {
activityLaunched = new Intent(MyWatchFace.this, ActivityLaunched.class);
activityLaunched .addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(activityLaunched);
}
МОСОЙ активность затем берет на себя. В рамках этой деятельности, у меня есть три варианта, в основном ImageButtons, с соответствующим onClickHandlers:
optionOne.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
confirmationIntent = new Intent(ActivityLaunched.this, ConfirmationActivity.class);
confirmationIntent .putExtra(ConfirmationActivity.EXTRA_ANIMATION_TYPE,
ConfirmationActivity.SEARCH_SERVICE);
confirmationIntent .putExtra(ConfirmationActivity.EXTRA_MESSAGE,
getString(R.string.option_one));
currentOption = "1";
broadcastIntent(currentOption);
startActivity(confirmationIntent);
ActivityLaunched.this.finish();
}
});
С broadcastIntent обработки радиопередачи:
public void broadcastIntent(String currentOption){
Intent optionUpdated = new Intent();
optionUpdated .setAction("com.example.packagename....");
optionUpdated .putExtra("Option", currentOption);
sendBroadcast(optionUpdated);
}
Пользователей выбирают параметры, активность закрывается и поток управления переходит к моему транслятору.
Теперь, когда был выбран вариант, я настроил трансляцию для получения простого тоста. Тем не менее, я не могу делать больше с этими данными, кроме как показать тост.
В моей BroadcastReceiver:
public void onReceive(Context context, Intent intent) {
Toast.makeText(context, "Option Updated." + intent.getStringExtra("Option"), Toast.LENGTH_LONG).show();
currentOption = intent.getStringExtra("Option");
sendOption .setAction("com.example.packagename....");
sendOption tion.putExtra("Option", currentOption);
context.sendBroadcast(sendOption);
Log.d(TAG, "THIS WORKS : " + currentOption);
}
В моей WatchFaceService я зарегистрировал приемник вместе с batteryinforeceivers, а также любые другие системы из них, как обычно. Я получаю сообщения в моем BroadcastReceiver
Назад снова к моему WatchFaceService, это где я получаю вопросы, я не получаю никаких обновлений:
optionUpdateReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
Bundle results = getResultExtras(true);
String option = results.getString("Option");
Log.d(TAG, " NOTHING SHOWING HERE " + currentOption + option);
}
};
Я попытался с помощью сеттеров и добытчиками, которые потребовался второй запуск активности, чтобы получить реальную стоимость.
Любые идеи относительно того, что я делаю неправильно?
Я пробовал следовать другим ответам и идеям здесь, а также другим внешним источникам. Но поскольку это Android Wear, с которым я работаю, столь же изменчивым, как и у ОС, все, что я пробовал, было предложено для Android, похоже, неэффективно для Android Wear.
Спасибо, Эммет
Там очень мало фундаментальный Android код (услуги, BroadcastReceivers и т.д.), которые не работают в Wear. Это просто Android под ним. Но вернемся к вашему вопросу ... Я не думаю, что вы вообще должны использовать BroadcastReceivers. Либо отправьте намерение от своей деятельности прямо к службе часовых служб, либо (возможно, проще) используйте такую библиотеку, как https://github.com/greenrobot/EventBus – String
@String, спасибо, я проверю это, я пытался отправьте данные с помощью намерения, но мне пришлось перезапустить активность для извлечения данных из предыдущего. Возможно, это был вопрос времени, но я не мог понять. Но, опять же, спасибо, я проверю вашу ссылку – mangledBadger