我在调用 API 时在 Intent 中保存值时遇到问题,调用 API 显示其值,但我无法将其保存到 Intent。 这是我的代码 保存 Intent
view.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
final Intent mIntent = new Intent(view.getContext(), KelasOnlineActivity.class);
mIntent.putExtra("link",kelas.get(position).getUrl());
sharedPrefKelas.saveSPString(SharedPrefKelas.SP_ID_Kelas, "");
Call<Kelas> result = mApiInterface.KelasCall(kelas.get(position).getUrl(), sharedPrefManager.getSpIdMember(), sharedPrefManager.getSpLevelMember(), sharedPrefManager.getSpToken());
result.enqueue(new Callback<Kelas>() {
@Override
public void onResponse(Call<Kelas> call, Response<Kelas> response) {
if (response.isSuccessful()) {
Kelas mkelas = response.body();
Log.d("data", "Nyoba Status Kelas: " + mkelas.statuschat);
mIntent.putExtra("Status",mkelas.statuschat);
} else {
Log.i("debug", "cekdata: GA BERHASIL");
}
}
@Override
public void onFailure(Call<Kelas> call, Throwable t) {
Log.e("debug", "onFailure: ERROR > " + t.getMessage());
}
});
mIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
view.getContext().startActivity(mIntent);
获取 Intent
Intent intent;
intent = getActivity().getIntent();
url= intent.getStringExtra("link");
status = intent.getStringExtra("Status");
Toast.makeText(getActivity(), url+status, Toast.LENGTH_LONG).show();
我可以在Toast中显示url,但不能显示状态,状态显示为null, 这是问题的图片
有人可以帮助我吗?如果有人能解决我的问题,我将不胜感激
最佳答案
您在 onResponse
回调之外调用 startActivity
:这样,它肯定会在 onResponse 之前调用新的 Activity,并且肯定会在状态保存事件之前调用.
view.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
final Intent mIntent = new Intent(view.getContext(), KelasOnlineActivity.class);
mIntent.putExtra("link",kelas.get(position).getUrl()); //This is outside of onResponse, so it's added correctly
sharedPrefKelas.saveSPString(SharedPrefKelas.SP_ID_Kelas, "");
Call<Kelas> result = mApiInterface.KelasCall(kelas.get(position).getUrl(), sharedPrefManager.getSpIdMember(), sharedPrefManager.getSpLevelMember(), sharedPrefManager.getSpToken());
result.enqueue(new Callback<Kelas>() {
@Override
public void onResponse(Call<Kelas> call, Response<Kelas> response) {
if (response.isSuccessful()) {
Kelas mkelas = response.body();
Log.d("data", "Nyoba Status Kelas: " + mkelas.statuschat);
mIntent.putExtra("Status",mkelas.statuschat);
//You should put them here
mIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
view.getContext().startActivity(mIntent);
} else {
Log.i("debug", "cekdata: GA BERHASIL");
}
}
@Override
public void onFailure(Call<Kelas> call, Throwable t) {
Log.e("debug", "onFailure: ERROR > " + t.getMessage());
}
});
//And not here
//mIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
//view.getContext().startActivity(mIntent);
关于java - 如何在调用 API 中保存 Intent 值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59927839/