2015-07-28 4 views
0

Моя проблема довольно проста. Я создаю карту, основанную на результате HTTP-запроса, выполняемого внутри отдельного потока. Карта также имеет метод onclick и определяется внутри runOnUiThread(), расположенной внутри отдельного потока. Однако, когда устройство прослушивается, событие onclick не запускается.Google Glass Immersion - OnClick не работает внутри отдельной нити

Вот мой код:

private void login() { 
    Runnable r = new Runnable() { 
     @Override 
     public void run() { 

     // irrelevant code 

     runOnUiThread(new Runnable() { 
      @Override 
      public void run() { 
       setContentView(buildError(code)); 
      } 
     } 
    } 

    Thread t = new Thread(r); 
    t.start(); 
} 

private View buildError(String code) { 
    CardBuilder card = new CardBuilder(this, CardBuilder.Layout.ALERT); 

    card.setIcon(R.drawable.ic_warning_150); 
    if (code.equals("1")) 
     card.setText("Incorrect credientals"); 
    else 
     card.setText("Unexpected error"); 

    card.setFootnote("Tap to try again"); 

    View cView = card.getView(); 
    cView.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      Log.i("Event", "Clicked"); // This is what isn't triggering 
     } 
    }); 
    cView.setFocusable(true); 
    cView.setFocusableInTouchMode(true); 

    return cView; 
} 
+0

Вы создаете 'Runnable' но не запустить его в любом случае. По крайней мере, ты не показал нам. –

+0

@KevinKrumwiede Да, я запускаю его, отредактировал код выше (забыл добавить эту часть в выдержку) – Lightwind

ответ

0

Даже если фрагмент кода содержит ошибку (не может быть скомпилирован, отсутствует ; в Runnable заявлении), вы на правильном пути.

В представлении просто необходимо запросить фокус, чтобы сразу его можно было щелкнуть. В противном случае вам придется переместить фокус вручную.

cView.setFocusable(true); 
cView.setFocusableInTouchMode(true); 
cView.requestFocus(); 

Reference

+0

А я не знал о '' cView.requestFocus() '. Большое спасибо! – Lightwind

Смежные вопросы