gpt4 book ai didi

java - 如何在android中首次运行时为变量设置值

转载 作者:行者123 更新时间:2023-12-01 08:50:10 24 4
gpt4 key购买 nike

嗨,我有 2 个 Activity (main_activitysec_activity),当我转到 sec_activity 时,我运行一个 volley请求并获取值并创建一个 Toast 来打印 sec 变量(sec 有效且 Toast 打印 成功)但是当我想Toastvolley请求时sec为空

如果我返回main_activity并再次转到sec_activity 2 Toast有效

这是我的代码:

private static String sec;
//other variables
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_send_new_content);

JsonArrayRequest movieReq = new JsonArrayRequest("url example",
new Response.Listener<JSONArray>() {
@Override
public void onResponse(JSONArray response) {
for (int i = 0; i < response.length(); i++) {
try {
JSONObject obj = response.getJSONObject(i);

try {

sec = new String(obj.getString("sec").getBytes("ISO-8859-1"), "UTF-8");
Toast.makeText(send_new_content.this, "in here is valid"+sec, Toast.LENGTH_SHORT).show();
//other values
} catch (UnsupportedEncodingException e1) {
e1.printStackTrace();
}
} catch (JSONException e) {
e.printStackTrace();
}}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
}});
AppController.getInstance().addToRequestQueue(movieReq);

Toast.makeText(send_new_content.this, "in here is empty "+sec, Toast.LENGTH_SHORT).show();
}

}

在此 toast 中有效:

Toast.makeText(send_new_content.this, "in here is valid"+sec, Toast.LENGTH_SHORT).show();

并且在此 Toast 中无效:

 Toast.makeText(send_new_content.this, "in here is empty "+sec, Toast.LENGTH_SHORT).show();

感谢您的帮助

最佳答案

这是因为 volley 默认情况下会在后台线程上处理请求,即使您无法在 UI 线程上发出请求,Toast 显示为空 sec 值是因为它不等待服务器响应,您在其中为 sec 分配一些值,它在调用 volley 的响应回调方法之前运行。

如果您依赖服务器端数据,则只有在收到服务器响应后才应继续操作。在此之前您还可以向用户显示一些等待对话框。

关于java - 如何在android中首次运行时为变量设置值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42444388/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com