簡體   English   中英

如何在調用 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但不能顯示狀態,狀態顯示為空,這是問題的圖片在此處輸入圖片說明

任何人都可以幫助我嗎?如果有人可以解決我的問題,我將不勝感激

您在onResponse回調之外調用startActivity :這樣,它肯定會在 onResponse 之前調用新活動,並且肯定會在狀態保存事件之前調用。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM