2016-07-21 12 views
0

最後にブール変数を返すブール値メソッドを作成しました... しかし、1秒後に返したい(一部の操作はアプリケーションで作成しています) うまくいきません... どうすればいいですか?postDelayedを含むメソッドに戻る

private boolean variable; 
public boolean Method(String device) { 
    //some code here 

    //then postdelayed 
    final Handler handler = new Handler(); 
    handler.postDelayed(new Runnable() { 
     @Override 
     public void run() { 
      //variable is set in other part of app 
      return variable; 
     } 
    }, 1000); 

} 
+0

? 「変数はアプリの他の部分に設定されています」というのはどういう意味ですか?何かの事のためにEventBusを使ってみませんか? – Vucko

+0

@Vucko私は同じコードで定義された変数を返します。upper ...メソッドが起動すると、まず変数 "device"(入力)が送信され、次にコードにスキャンがいくつかあります。コードで変更されたこの変数...(私の英語のために申し訳ありません) –

+0

私は間違って何かが表示されません。これは正常に動作します。アプリの他の部分で変数自体を設定する際に問題がなければなりません。 –

答えて

0

あなたはしていません。あなたは何をやっているのかを再構築する必要があります。リターンを遅らせる唯一の方法は、UIスレッドを保持することです。UIスレッドは、これまでに何も行う正しい方法ではありません。あなたがする必要があるのは、戻り値を必要とするコードをpostDelayed Runnableで実行することです。あなたがしたいことは決してうまくいかないでしょう。

+0

ありがとう、私はそれを少し異なって考え出した;) –

0

あなたは次のように、あなたがそのブール変数を呼び出し、取得したい部分にそのハンドラを移動することができます正確に何が起こる

private String device; 
private boolean variable; 

public void doSomething() { 
    final Handler handler = new Handler(); 
    handler.postDelayed(new Runnable() { 
     @Override 
     public void run() { 
      if (getBoolean(device)) { 
       // Do something. 
      } 
     } 
    }, 1000); 
} 

public boolean getBoolean(String device) { 
    // Some code... 
    return variable; 
} 
関連する問題