java - 如何在调用 API 中保存 Intent 值?

标签 java android android-intent retrofit2

我在调用 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);

enter image description here

获取 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, 这是问题的图片 enter image description here

有人可以帮助我吗?如果有人能解决我的问题,我将不胜感激

最佳答案

您在 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/

相关文章:

java - Thread 类中的 Run 方法未被调用

java - 加载一个小型 SQLite 数据库(20 行左右)以使用 Android 进行读取

android - 在 Android 中隐藏底部选项栏

java - Android Google Pay 结算 - 响应 4 : ITEM_UNAVAILABLE

Android,向 TextView 添加不同数量的可点击跨度

java - Java 8 中的类型不匹配错误

java - Karate - 比较多个 JSON 对象架构

java - 服务器上适用于 JDK 的 Eclipse IDE

java - 将数据从 Activity 发送到 Android 中的 viewpager fragment

android - 如何使用 Intent 在 Facebook 上分享文本和图像