2014-04-10 93 views
1

我有一個谷歌眼鏡應用程序。它通過BT從移動設備接收數據(但這應該不重要),在我的應用程序中調用處理程序以顯示在玻璃UI上接收數據。我正在使用玻璃上的活動。Google Glass setText()不工作

private final Handler mHandler = new Handler(Looper.getMainLooper()) 
{ 
@Override 
public void handleMessage(Message msg) 
{ 
    switch(msg.what) 
    { 
    case 1: 
     if(msg.arg2 == 1) 
     { 
      Toast.makeText(getApplicationContext(), "got argument 1", Toast.LENGTH_LONG).show(); 
      mMyTextView.setText("got argument 1"); 

     } 
     else if(msg.arg2 == 2) 
     { 
      Toast.makeText(getApplicationContext(), "got argument 2", Toast.LENGTH_LONG).show(); 
      mMyTextView.setText("got argument 2"); 

     } 
     break; 
    default: 
     // don't care about other cases, only case 1 is important 
    } 
} 

};

mMyTextView是我的活動中的成員變量我填寫onCreate(),填充它在我的處理程序中並沒有什麼區別。

一旦我將我的應用程序從Eclipse推送到玻璃並運行它,它工作得非常好。現在在玻璃上向下滑動,我不處理這個滑動事件,因此Gesture只返回false。以防萬一。

現在我正在「ok玻璃」屏幕上並通過語音命令啓動我的應用程序。吐司顯示,他們應該,但文字視圖不會更新了。在我的處理程序中有斷點,我可以看到所有內容都被正確填充,textView不爲null,它在textView的成員變量中顯示正確的文本。正確的文本不會出現在用戶界面上。從Eclipse再次發佈它,通過語音命令啓動它,並且再次正常工作。

+0

這只是一個猜測,但嘗試在onResume中再次分配TextView成員。即使您在調試時看到非空引用(很好的技術btw),也許這些引用不再有效。讓我知道這是否適合你。 –

+0

我花了毫秒(有一個動態文本)在onResume的時間,並顯示在相同的文本視圖。這工作正常。 – AndyAndroid

回答

1

我有這個問題從互聯網上下載一個例子,我忘了在onCreate()方法中加入TextView的參考到.xml佈局中;

private TextView mMyTextView; 

protected void onCreate(Bundle savedInstanceState) { 
super.onCreate(savedInstanceState); 
setContentView(R.layout.activity_main); 
mMyTextView = (TextView)findViewById(R.id.mMyTextView); 
... 
... 
... 
+0

我有onCreate中的setContentView和onResume中的mMyTextView查找。 Remmeber在安裝後的第一次執行時都可以工作。所以它可能必須以某種方式來處理生命週期管理。 – AndyAndroid