Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/216.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在调用API中保存值意图?_Java_Android_Android Intent_Retrofit2 - Fatal编程技术网

Java 如何在调用API中保存值意图?

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

我在调用API将值保存到Intent时遇到问题,调用API显示其值,但我无法将其保存到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);
我可以在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”);
进行ess
statuschat
,然后您可以使用
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);