2014-10-08 37 views
0

我正在使用方法来获取值。我正在成功地获得价值,但问题是价值retun空在mehod看到我的代码: -带方法的java方法返回类型

String authtoken; 

public String getAuthTokenForCurrentUser(Activity act, 
     final Account account, final String authTokenType) { 

    final AccountManager mAccountManager = AccountManager.get(act); 
    final AccountManagerFuture<Bundle> future = mAccountManager 
      .getAuthToken(account, authTokenType, null, act, null, null); 

    new Thread(new Runnable() { 
     @Override 
     public void run() { 
      try { 
       Bundle bnd = future.getResult(); 

       authtoken = bnd.getString(AccountManager.KEY_AUTHTOKEN); 

       Log.e("token in method", authtoken); // getting successfully 
      } catch (Exception e) { 
       e.printStackTrace(); 
       showMessage(e.getMessage()); 
      } 
     } 
    }).start(); 

    return authtoken; 
}  

//call here 


MyClass iHealthApp = new MyClass(); 
    String accessToken = iHealthApp.getAuthTokenForCurrentUser(ClientActivity.this, currentAppUserAccount,AccountGeneral.AUTHTOKEN_TYPE_FULL_ACCESS); 
    Log.e("access token","token "+ accessToken); // this is null here 

回答

2

您应该使用Callable检索执行(与Future一起)的结果,还是应该等待线程完成检索分配的authtoken。在你的情况下,发生的情况是:当你的线程启动时,你的方法已经返回,返回未分配的值authtoken

+0

谢谢。我解决了这个问题.. – aditay 2014-10-08 08:28:31