所以,我正在构建一个鹅卵石应用程序并让我了解一些事情,我首先要通过手机到鹅卵石连接进行一些测试。虽然像往常一样在C中,但我仍然被困在最基本的部分上。初始文本未显示,屏幕只是空白。
以下是相关代码:
static void change_text(Layer *layer, GContext *ctx){
text_layer_set_text(textLayer, textRecieved);
APP_LOG(APP_LOG_LEVEL_DEBUG, "Changing to: %s", textRecieved);
}
static void window_load(Window *window){
GRect bounds = layer_get_bounds(window_get_root_layer(window));
textLayer = text_layer_create(GRect(5,5, bounds.size.w-10, 30));
textRecieved = (char *) malloc(BUFFER_SIZE);
memset(textRecieved,0,BUFFER_SIZE);
strcpy(textRecieved, "Nothing yet.");
text_layer_set_text(textLayer, textRecieved);
layer_add_child(window_get_root_layer(window), text_layer_get_layer(textLayer));
APP_LOG(APP_LOG_LEVEL_DEBUG, "Recieved: %s", textRecieved);
layer_set_update_proc(text_layer_get_layer(textLayer), change_text);
}
相关变量定义(在文件的最顶部):
TextLayer* textLayer;
const int BUFFER_SIZE = 100;
char* textRecieved;
如果我注释掉*layer_set_update_proc(...);*
行,我可以看到该文字。我可能在change_text方法中做错了什么。 (它在window_load
之后不久被调用。)我的调试打印输出是:
[DEBUG] app_message.c:70: Recieved: Nothing yet.
[DEBUG] app_message.c:55: Changing to: Nothing yet.
答案 0 :(得分:2)
你不应该致电layer_set_update_proc()
。通过这样做,您可以覆盖默认的text_layer
绘图机制。这就是为什么你没有在屏幕上看到任何东西。
其他一些评论:
text_layer_set_text()
strncpy(textRecieved, "Nothing yet", sizeof(textRecieved));
代替memset
+ strcpy