在 void 异步方法之外获取字符串的值?
Posted
技术标签:
【中文标题】在 void 异步方法之外获取字符串的值?【英文标题】:get value of string outside void async method? 【发布时间】:2020-10-17 08:28:06 【问题描述】:如何在 getInformation 方法之外获取 String r 的值?具体来说,我想将 String stringpwd 设置为 String r。 (getInformation 是一个 void 方法)
编辑:我忘了说,我只想在成功完成后设置值stringpwd。
String user = emailaddress.getText().toString().trim();
String pwd = password.getText().toString().trim();
db.getInformation("password", user, new DatabaseHelper.MyCallback()
@Override
public void success(String r)
// Use result
@Override
public void failure(Throwable t)
// Display error
);
String stringpwd = r;
【问题讨论】:
这段代码是什么语言的?请先标记那些。 它在java中。我会标记的。 这将有助于获得正确的关注。作为注释,void
之类的标签确实毫无意义,应该避免使用。人们不会寻找这类问题。
【参考方案1】:
您可以定义一个全局变量(下面使用的示例:userCpy),并将字符串 r 的值初始化或存储在该变量中,使其在其他地方可用。
String userCpy = null;
int flag = 0;
String user = emailaddress.getText().toString().trim();
String pwd = password.getText().toString().trim();
db.getInformation("password", user, new DatabaseHelper.MyCallback()
@Override
public void success(String r)
// Use result
userCpy = r;
flag = 1;
@Override
public void failure(Throwable t)
// Display error
);
if(flag==1)
String stringpwd = userCpy;
【讨论】:
对不起,我忘了说,我只想在成功完成后设置值stringpwd。 @AnonymousCardinal 好吧,只需将String userCpy = "";
更改为String userCpy = null
和stringpwd
将在失败时为空。
getInformation 是异步的,所以我不想在成功返回 userCpy 之前设置 stringpwd。
我添加了一个 int 变量标志,以确保 stringpwd = userCpy(即 stringpwd = r)仅在执行成功块时发生。
正如@pirho 提到的,在您的情况下,最好将初始值 null 分配给 userCpy 而不是 ""。以上是关于在 void 异步方法之外获取字符串的值?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Android Studio 中以除 onCreate 之外的其他方法获取应用程序的上下文?
js中获取标签里面的值除了document.getEelementById()和document.getEelementsByName()之外还有那些方法?