如何在 Calling API 中保存值 Intent?

How to save value Intent inside Calling API?

我无法通过调用 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);

获得意图

    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);

尝试

private String tmp = "";
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);
                  tmp = 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);
      mIntent.putExtra("Status", tmp);
      view.getContext().startActivity(mIntent);