gpt4 book ai didi

java - 运行 Activity 两次(而不是一次)以从 getter 获取值

转载 作者:行者123 更新时间:2023-12-02 10:43:41 26 4
gpt4 key购买 nike

当点击图像(来自之前的 Activity )时,我会进入此 Activity (我在其中传递 clientid),该 Activity 读取 JSONArray 并使用 setter 来设置昵称。

然后我使用 getter 来执行 TextView setText。

问题是第一次没有设置昵称。当我返回到上一个 Activity 并再次点击同一图像时,才会设置昵称。为什么第一次不显示昵称。

(ps:我对 Java/Android Studio 还很陌生)

package com.smartvibes.smartbeat;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.TextView;
import com.android.volley.Request;
import com.android.volley.RequestQueue;
import com.android.volley.Response;
import com.android.volley.VolleyError;
import com.android.volley.toolbox.JsonObjectRequest;
import com.android.volley.toolbox.Volley;
import org.json.JSONException;
import org.json.JSONObject;

public class profileViewActivity extends AppCompatActivity {
RequestQueue rs;
String url, id, nick, age, city, mainpic, numpics, extrapic0, extrapic1, extrapic2, extrapic3, extrapic4, extrapic5;
TextView profileIntro;
static String pnick;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_profile_view);
Bundle getProfileId = getIntent().getExtras();
if (getProfileId == null) {
return;
}
String profileid = getProfileId.getString("profileid");
url = "https://www.smartvibes.be/profiles/api/profileview.php?id=" + profileid;
rs = Volley.newRequestQueue(this);
sendjsonrequest();
profileIntro = (TextView) findViewById(R.id.profileIntro);
profileIntro.setText(getPnick());
}

public void sendjsonrequest() {
JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(Request.Method.GET, url, null, new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
try {
setPnick(response.getString("nick"));
} catch (JSONException e) {
e.printStackTrace();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
}
});
rs.add(jsonObjectRequest);
}

public static void setPnick(String nick) {
pnick = nick;
}

public static String getPnick(){
return pnick;
}
}

最佳答案

因为sendjsonrequest是一个异步调用

您需要在 onResponse 方法本身中更新 textView,如下所示

setPnick(response.getString("nick"));
profileIntro.setText(getPnick());

关于java - 运行 Activity 两次(而不是一次)以从 getter 获取值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52747017/

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