Java 如何在调用API中保存值意图?
我在调用API将值保存到Intent时遇到问题,调用API显示其值,但我无法将其保存到Intent。 这是我的密码 存心Java 如何在调用API中保存值意图?,java,android,android-intent,retrofit2,Java,Android,Android Intent,Retrofit2,我在调用API将值保存到Intent时遇到问题,调用API显示其值,但我无法将其保存到Intent。 这是我的密码 存心 view.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { final Intent mIntent = new Intent(view.getContext(), KelasOnlineA
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);
我可以在Toast中显示url,但不能显示状态,状态显示为null,
这就是问题所在
有人能帮我吗?如果有人能解决我的问题,我非常感激。您在
onResponse
回调之外调用startActivity
:这样,它肯定会在onResponse之前调用新活动,肯定会在status save事件之前调用新活动
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);
view.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图){
final Intent minent=new Intent(view.getContext(),KelasOnlineActivity.class);
minent.putExtra(“link”,kelas.get(position.getUrl());//这在onResponse之外,因此添加正确
sharedPrefKelas.saveSPString(sharedPrefKelas.SP_ID_Kelas,“”);
调用结果=mApiInterface.KelasCall(kelas.get(position.getUrl(),sharedPrefManager.getSpIdMember(),sharedPrefManager.getSpLevelMember(),sharedPrefManager.getSpToken());
result.enqueue(新回调(){
@凌驾
公共void onResponse(调用、响应){
if(response.issusccessful()){
Kelas mkelas=response.body();
Log.d(“数据”,“Nyoba状态记录:”+mkelas.statuschat);
minent.putExtra(“状态”,mkelas.statuschat);
//你应该把它们放在这里
minent.setFlags(意图、标志、活动、新任务);
view.getContext().startActivity(minent);
}否则{
Log.i(“debug”,“cekdata:GA BERHASIL”);
}
}
@凌驾
失败时公共无效(调用调用,可丢弃的t){
Log.e(“debug”,“onFailure:ERROR>”+t.getMessage());
}
});
//而不是在这里
//minent.setFlags(意图、标志、活动、新任务);
//view.getContext().startActivity(minent);
试试看
私有字符串tmp=”“;
view.setOnClickListener(新的view.OnClickListener(){
@凌驾
公共void onClick(视图){
final Intent minent=new Intent(view.getContext(),KelasOnlineActivity.class);
putExtra(“link”,kelas.get(position.getUrl());
sharedPrefKelas.saveSPString(sharedPrefKelas.SP_ID_Kelas,“”);
调用结果=mApiInterface.KelasCall(kelas.get(position.getUrl(),sharedPrefManager.getSpIdMember(),sharedPrefManager.getSpLevelMember(),sharedPrefManager.getSpToken());
result.enqueue(新回调(){
@凌驾
公共void onResponse(调用、响应){
if(response.issusccessful()){
Kelas mkelas=response.body();
Log.d(“数据”,“Nyoba状态记录:”+mkelas.statuschat);
tmp=mkelas.statuschat;
}否则{
Log.i(“debug”,“cekdata:GA BERHASIL”);
}
}
@凌驾
失败时公共无效(调用调用,可丢弃的t){
Log.e(“debug”,“onFailure:ERROR>”+t.getMessage());
}
});
minent.setFlags(意图、标志、活动、新任务);
Minent.putExtra(“状态”,tmp);
view.getContext().startActivity(minent);
您将无法看到状态,因为您正在写入行minent.putExtra(“Status”,mkelas.statuschat);inside,这意味着它将在后台工作,并且可能需要时间来给出响应,因此在得到响应之前,您的意图将被调用。哦,好的,谢谢兄弟,您能给我一些参考资料来解决如何在onclick中保存调用API的值吗?哦,好的,谢谢兄弟,但是如果项目是onclick,我如何保存调用API的值呢?你能给我一些可以解决这个问题的参考资料吗?我不确定你在问什么,我不明白你想要什么我想获得mkelas.statuschat bro,但我不知道如何保存它并在另一个活动中调用它,我已经使用了SharedRef,但有时它不能在标签碎片中替换它的键,我的代码你可以根据使用另一个活动的intent.getStringExtra(“Status”);
进行essstatuschat
,然后您可以使用SharedReferences
或任何您想要的内容保存它Toast中的状态值为“”bro与tmp declare相同,它不能在调用apisry bro中设置值我的错误,它可以显示它的值,但在第一次单击时它没有显示其真实值,需要刷新才能显示真实值。
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);