2017-02-05 44 views
1

私はカート管理を含むecomアプリケーションに取り組んでいます。今、私はフラグメント(CartFragment)とアダプタ(ShowCartAdapter)をrecyclerViewに添付しています。アクティビティの文脈が断片化していません

私は1つのフラグメントで3回のネットワークコールを行いました(つまり、1.カートにアイテムを追加、2.カートにアイテムを表示、3.カートからアイテムを削除する)。

上記のフラグメントはアクティビティ(ProductDetailActivity)に添付されています。カートにアイテムを追加してカートにアイテムを表示するのは完璧ですが、3番目のアイテム、つまりカートからアイテムを削除するのは面倒です.アイテムをクリックして、そのアイテムをrecyclerviewから削除したいのですが、今はフラグメントからアダプタへのアイテムのユニークなIDを送信していますが、そのアイコンをクリックするとProgressDialog(progressDialog=new ProgressDialog(getActivity());)にヌルポインタを与えています。その断片にもはや付随しません。以下は、アダプタ、フラグメント、アクティビティのコードスニペットです。私を助けてください!

CartFragment

public class CartFragment extends Fragment implements RetrofitTaskListener<AddCart> { 

    private ProgressDialog progressDialog; 
    private RecyclerView recyclerView; 
    private AdapterAddCart adapter; 
    private AdapterShowCart adapterShowCart; 
    private boolean loading = true; 
    AddCart addCartList; 
    int pageIndex; 
    private LinearLayoutManager linearLayoutManager; 
    private String email1,articlCode,image,quantity,cost; 
    private static final String STARTING_TEXT = "Four Buttons Bottom Navigation"; 
    private Button btnCheckout; 
    private FragmentTransaction fragmentTransaction; 
    private int frag,cartSize; 
    private TextView cartEmptyTxt; 
    private Context context; 
    private SharedPreferences sharedPreference; 
    private SharedPreferences.Editor editor; 
    private SessionManager session; 
    private EditText cmntTxt; 


    public CartFragment() { 
     // Required empty public constructor 
    } 

    public static CartFragment newInstance(int text) { 
     Bundle args = new Bundle(); 
     args.putInt(STARTING_TEXT, text); 

     CartFragment sampleFragment = new CartFragment(); 
     sampleFragment.setArguments(args); 
     return sampleFragment; 
    } 


    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
          Bundle savedInstanceState) { 
     // Inflate the layout for this fragment 
     articlCode = getArguments().getString("artCode"); 
     image = getArguments().getString("image"); 
     quantity = getArguments().getString("quantity"); 
     cost = getArguments().getString("cost"); 
     frag = getArguments().getInt("fragment"); 

     View view = inflater.inflate(R.layout.fragment_cart, container, false); 
     cmntTxt = (EditText)view.findViewById(R.id.comment_txt); 
     getActivity().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN); 

     session = new SessionManager(getActivity().getApplicationContext()); 

     sharedPreference = getActivity().getSharedPreferences("CART",0); 
     editor = sharedPreference.edit(); 

     ((AppCompatActivity) getActivity()).getSupportActionBar().setTitle("Cart"); 

     btnCheckout = (Button)view.findViewById(R.id.btnCheckout); 

     cartEmptyTxt = (TextView)view.findViewById(R.id.emptytxt); 
     cartEmptyTxt.setVisibility(View.GONE); 

     if (!session.isLoggedIn()) { 
      cartEmptyTxt.setVisibility(View.VISIBLE); 
      btnCheckout.setVisibility(View.GONE); 
      cmntTxt.setVisibility(View.GONE); 

     } 

     btnCheckout.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
    FragmentManager fm = getFragmentManager(); 
       fragmentTransaction = fm.beginTransaction(); 
       AddressFragment addressFragment = new AddressFragment(); 
     fragmentTransaction.replace(R.id.fragmentContainer,addressFragment); 
       fragmentTransaction.addToBackStack(null); 
       fragmentTransaction.commit(); } 
     }); 
     pageIndex = 0; 
     recyclerView = (RecyclerView)view.findViewById(R.id.cart_recycler_view); 
     linearLayoutManager=new LinearLayoutManager(getActivity()); 
    recyclerView.setLayoutManager(linearLayoutManager); 
    SQLiteHandler sqLiteHandler = new SQLiteHandler(getActivity()); 
     List<SessionModel> sessionModelList = sqLiteHandler.getUserDetails(); 
     Bundle arguments = getArguments(); 
     if (arguments != null) { 
      for (SessionModel sm : sessionModelList){ 
       email1 = sm.getEmail(); 
      } 

      if (frag == 6){ 
      callCartService(email1,articlCode,cost,quantity); 
      }else if (email1!=null){ 
       callGetCart(email1); 
      } 
    } 

     return view; 
    } 
    public void callCartService(String email,String artCode,String price,String qty){ 
     showProgreass(); 
     pageIndex = pageIndex + 1; 
     String url = String.format(ServerConfigStage.ADD_CART(),email,artCode,price,qty); 
     RetrofitTask task = new RetrofitTask<>(CartFragment.this, CommonUtility.HTTP_REQUEST_TYPE.POST, CommonUtility.CallerFunction.ADD_CART_FUNCTION, url,getActivity()); 
     task.execute(); 
} 

    public void callGetCart(String email){ 
     showProgreass(); 
     pageIndex = pageIndex + 1; 
     String url = String.format(ServerConfigStage.GET_CART(),email); 
     RetrofitTask task = new RetrofitTask<>(CartFragment.this, CommonUtility.HTTP_REQUEST_TYPE.POST, CommonUtility.CallerFunction.GET_CART, url,getActivity()); 
     task.execute(); 
    } 

    public void delItemCart(String email,String itemId){ 
     adapterShowCart = new AdapterShowCart(getContext(),CartFragment.this); 
     showProgreass(); 
     String url = String.format(ServerConfigStage.DEL_ITEM_CART(),email,itemId); 
     RetrofitTask task = new RetrofitTask<>(CartFragment.this, CommonUtility.HTTP_REQUEST_TYPE.POST, CommonUtility.CallerFunction.DEL_ITEM_CART, url,getActivity()); 
     task.execute(); 
    } 
public void showProgreass(){ 
     progressDialog=new ProgressDialog(getActivity()); 
     progressDialog.setIndeterminate(true); 
     progressDialog.setMessage("Please Wait..."); 
     progressDialog.setCanceledOnTouchOutside(false); 
     progressDialog.setCancelable(false); 
     progressDialog.show(); 
    } 
    public void stopProgress(){ 
     if(progressDialog!=null && progressDialog.isShowing()) 
      progressDialog.cancel(); 
    } 

    @Override 
    public void onRetrofitTaskComplete(Response<AddCart> response, Context context, CommonUtility.CallerFunction _callerFunction) { 
     stopProgress(); 
     if (response.isSuccess()) { 
      if (response.body() != null) { 
      addCartList =response.body(); 

       if (_callerFunction == CommonUtility.CallerFunction.ADD_CART_FUNCTION){ 
        if (addCartList.getStatus() == 0){ 
         cartSize = addCartList.getDeatils().size(); 
         editor.putInt("CART_ITEMS",cartSize); 
         editor.commit(); 
         Toast.makeText(context, addCartList.getResponse(), Toast.LENGTH_SHORT).show(); 
         if (adapter == null) { 
          adapter = new AdapterAddCart(context, R.layout.row_cart, addCartList); 
          recyclerView.setAdapter(adapter); 
         } 
        }else 
        if(addCartList.getStatus()>0) { 
         cartSize = addCartList.getDeatils().size(); 
         editor.putInt("CART_ITEMS",cartSize); 
         editor.commit(); 
      if (adapter == null) { 
         adapter = new AdapterAddCart(context, R.layout.row_cart, addCartList); 
        recyclerView.setAdapter(adapter); 

      } 

        adapter.notifyDataSetChanged(); 
       }else {cartSize = addCartList.getDeatils().size(); 
         editor.putInt("CART_ITEMS",cartSize); 
         editor.commit(); 
         if (adapter == null) { 
          adapter = new AdapterAddCart(context, R.layout.row_cart, addCartList); 

          recyclerView.setAdapter(adapter);; 

         } 

         adapter.notifyDataSetChanged(); 


         Toast.makeText(context, addCartList.getResponse(), Toast.LENGTH_SHORT).show(); 

        } 
       }else if (_callerFunction == CommonUtility.CallerFunction.GET_CART){ 
        if (addCartList.getStatus() == 0){ 
         if (addCartList.getCart().size()>0){ 
         cartSize = addCartList.getCart().size(); 
         editor.putInt("CART_ITEMS",cartSize); 
         editor.commit(); 
         } 
        }else 
        if(addCartList.getStatus()>0) { 
         if (addCartList.getCart().size()>0){ 
         cartSize = addCartList.getCart().size(); 
         editor.putInt("CART_ITEMS",cartSize); 
         editor.commit();} 
         if (adapterShowCart == null) { 
          adapterShowCart = new AdapterShowCart(context, R.layout.row_cart, addCartList); 

          recyclerView.setAdapter(adapterShowCart); 
          ; 

         } 
         adapterShowCart.notifyDataSetChanged(); 
       }else { 
         cartEmptyTxt.setVisibility(View.VISIBLE); 
        } 

         //Toast.makeText(context, addCartList.getResponse(), Toast.LENGTH_SHORT).show(); 
       }else if (_callerFunction == CommonUtility.CallerFunction.DEL_ITEM_CART){ 
        if (addCartList.getStatus()>0){ 
         if (adapterShowCart == null) { 
          adapterShowCart = new AdapterShowCart(context, R.layout.row_cart, addCartList); 
          recyclerView.setAdapter(adapterShowCart); 

         }adapterShowCart.notifyDataSetChanged(); 

        } 
       } 
      } 

     } 

    } 

    @Override 
    public void onRetrofitTaskFailure(Throwable t) { 
     stopProgress(); 
     // Toast.makeText(getActivity(),"Fail to load Data",Toast.LENGTH_LONG).show(); 

     if (getActivity()!= null) 
     { 
     getActivity().finish(); 
     } 
    } 

    public void myFragmentMethod(){ 
     // make sure to double check casts (to YourActivity) like these before invoking 
     ((ProductDetailActivity)getActivity()).myOnResume(); 
    } 


} 

AdapterShowCart

public class AdapterShowCart extends RecyclerView.Adapter<AdapterShowCart.ViewHolder>{ 
    private AddCart addCartList; 
    private RemoveItemCommunication removeItemCommunication; 
    private CartFragment cartFragment = new CartFragment(); 


    Context context; 
    private int layoutResourceId,cart; 
    private SharedPreferences sharedPreferences; 

    public AdapterShowCart(Context context, int layoutResourceId, AddCart addCarts) { 
     this.context = context; 
     this.layoutResourceId = layoutResourceId; 
     this.addCartList = addCarts; 
    } 

    public AdapterShowCart(Context context, CartFragment cartFragment) { 
     this.context = context; 
     this.cartFragment=cartFragment; 
    } 

    public void setOnClickListener(RemoveItemCommunication removeItemCommunication1){ 
     removeItemCommunication = removeItemCommunication1; 
    } 

    @Override 
    public AdapterShowCart.ViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) { 
     View view = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.row_cart, viewGroup, false); 
     return new ViewHolder(view); 
    } 

    @Override 
    public void onBindViewHolder(AdapterShowCart.ViewHolder viewHolder, int i) { 


     viewHolder.tv_android.setText("Price :"+" "+addCartList.getCart().get(i).getPrice()); 
     viewHolder.tv_art_number.setText("Article No. :"+" "+addCartList.getCart().get(i).getItemCode()); 
     viewHolder.tvQty.setText("Quantity :"+""+addCartList.getCart().get(i).getCartQuantity()); 


     //viewHolder.img_android.setImageResource(products.get(i).getAndroid_image_url()); 
     Picasso.with(context).load(addCartList.getCart().get(i).getURL()).resize(240, 120).into(viewHolder.img_android); 
    } 

    @Override 
    public int getItemCount() { 

     // cart = sharedPreferences.getInt("CART_ITEMS",0); 


      return addCartList.getCart().size(); 

    } 



    class ViewHolder extends RecyclerView.ViewHolder{ 
     private TextView tv_android,tv_art_number,tvQty; 
     private ImageView img_android,remove; 
     private int pos; 
     private CardView cardView; 
     public ViewHolder(View view) { 
      super(view); 

      tv_android = (TextView)view.findViewById(R.id.tvTitle); 
      tv_art_number=(TextView)view.findViewById(R.id.tvNumber); 
      cardView = (CardView)view.findViewById(R.id.card_view); 
      img_android = (ImageView) view.findViewById(R.id.mealImage); 
      tvQty=(TextView)view.findViewById(R.id.tvQty); 
      remove=(ImageView)view.findViewById(R.id.removeItem); 
      remove.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View view) { 
        int pos = getAdapterPosition(); 
        cartFragment.delItemCart(addCartList.getEmail(),addCartList.getCart().get(pos).getId()); 
       } 
      }); 

      cardView.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View view) { 
        pos = getAdapterPosition(); 



       } 
      }); 
     } 
    } 

} 

ProductDetailActivity

@Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_product_detail); 

     this.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN); 

     toolbar = (Toolbar) findViewById(R.id.tool_bar); 
     setSupportActionBar(toolbar); 
     getSupportActionBar().setDisplayHomeAsUpEnabled(true); 
     getSupportActionBar().setDisplayShowHomeEnabled(true); 
     getSupportActionBar().setTitle("Product Details"); 
     supportInvalidateOptionsMenu(); 
     toolbar.setTitleTextColor(Color.WHITE); 

     session = new SessionManager(getApplicationContext()); 


     itemCode = getIntent().getExtras().getString("ItemCode"); 
     itemName = getIntent().getExtras().getString("ItemName"); 

     stockAvailibility = (ImageView) findViewById(R.id.stock_image); 
     code = (TextView) findViewById(R.id.item_code); 
     price = (TextView) findViewById(R.id.price_txt); 
     name = (TextView) findViewById(R.id.product_name); 
     productImage = (ImageView) findViewById(R.id.image_big); 
     stock = (TextView) findViewById(R.id.stock); 
     stock_status = (TextView) findViewById(R.id.stock_text); 
     quantity_txt = (EditText) findViewById(R.id.unit_number); 
     qtyText = (TextView) findViewById(R.id.selectQty); 


     addCart = (Button) findViewById(R.id.btn_add_cart); 



     callProductDetail(itemCode); 


     addCart.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       String selectedQty = quantity_txt.getText().toString(); 

       if (session.isLoggedIn()) { 

        if (!selectedQty.isEmpty() && Integer.parseInt(selectedQty) > Integer.parseInt(qty)) { 
         AlertDialog.Builder builder = new AlertDialog.Builder(ProductDetailActivity.this); 
         builder.setMessage("You can not add more than" + " " + qty + " " + "units") 
           .setCancelable(false) 
           .setPositiveButton("OK", new DialogInterface.OnClickListener() { 
            public void onClick(DialogInterface dialog, int id) { 
             //do things 
            } 
           }); 
         AlertDialog alert = builder.create(); 
         alert.show(); 
        } else if (selectedQty.isEmpty() || Integer.parseInt(selectedQty) == 0) { 
         AlertDialog.Builder builder = new AlertDialog.Builder(ProductDetailActivity.this); 
         builder.setMessage("Please Add Quantity") 
           .setCancelable(false) 
           .setPositiveButton("OK", new DialogInterface.OnClickListener() { 
            public void onClick(DialogInterface dialog, int id) { 
             //do things 
            } 
           }); 
         AlertDialog alert = builder.create(); 
         alert.show(); 

        } else if (!selectedQty.isEmpty() && Integer.parseInt(selectedQty) != 0 && Integer.parseInt(selectedQty) <= Integer.parseInt(qty)) { 
        addCart.setVisibility(View.GONE); 
         hideKeyboard(ProductDetailActivity.this); 
        fm = getSupportFragmentManager(); 

        fragmentTransaction = fm.beginTransaction(); 
        CartFragment cartFragment = new CartFragment(); 
        fragmentTransaction.replace(R.id.fragmentContainer,cartFragment); 
        Bundle bundle = new Bundle(); 
        bundle.putString("artCode", artCode); 
        bundle.putString("image",image_url); 
        bundle.putString("quantity",selectedQty); 
         bundle.putString("cost",cost); 
        bundle.putInt("fragment",6); 
        cartFragment.setArguments(bundle); 
        fragmentTransaction.addToBackStack(null); 
        fragmentTransaction.commitAllowingStateLoss(); 
       } 
       } else { 
        AlertDialog.Builder builder = new AlertDialog.Builder(ProductDetailActivity.this); 
        builder.setMessage("Please Login To Continue") 
          .setCancelable(false) 
          .setNegativeButton("NOT NOW", new DialogInterface.OnClickListener() { 
           @Override 
           public void onClick(DialogInterface dialogInterface, int i) { 

           } 
          }) 
          .setPositiveButton("LOGIN", new DialogInterface.OnClickListener() { 
           public void onClick(DialogInterface dialog, int id) { 
            Intent intent = new Intent(ProductDetailActivity.this, LoginActivity.class); 
            intent.putExtra("fragment", 7); 
            startActivity(intent); 
           } 
          }); 
        AlertDialog alert = builder.create(); 
        alert.show(); 
       } 
      } 
     }); 



    } 

    public void myOnResume(){ 
     this.onResume(); 
     addCart.setVisibility(View.VISIBLE); 
    } 

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 

     switch (item.getItemId()) { 

      case android.R.id.home: 
       // todo: goto back activity from here 

       finish(); 
       return true; 


      default: 
       return super.onOptionsItemSelected(item); 
     } 
    } 

    public void showProgreass() { 
     progressDialog = new ProgressDialog(ProductDetailActivity.this); 
     progressDialog.setIndeterminate(true); 
     progressDialog.setMessage("Please Wait..."); 
     progressDialog.setCanceledOnTouchOutside(false); 
     progressDialog.setCancelable(false); 
     progressDialog.show(); 
    } 

    public void stopProgress() { 
     if (progressDialog != null && progressDialog.isShowing()) 
      progressDialog.cancel(); 
    } 

    public void callProductDetail(String productId) { 
     showProgreass(); 

     String url = String.format(ServerConfigStage.GET_PRODUCT_DETAIL(), productId); 
     RetrofitTask task = new RetrofitTask<List<ProductDetail>>(ProductDetailActivity.this, CommonUtility.HTTP_REQUEST_TYPE.GET, CommonUtility.CallerFunction.GET_PRODUCT_DETAIL, url, ProductDetailActivity.this); 
     task.execute(); 


    } 

    @Override 
    public void onRetrofitTaskComplete(Response<List<ProductDetail>> response, Context context, CommonUtility.CallerFunction _callerFunction) { 
     stopProgress(); 
     if (response.isSuccess()) { 
      if (response.body() != null) { 
       if (response.body().get(0).getStatus() > 0) { 

        String json = gson.toJson(response); 
        System.out.println(json); 

        artCode = response.body().get(0).getItemcode(); 
        cost = response.body().get(0).getPrice(); 
        String desc = response.body().get(0).getDescription(); 
        image_url = response.body().get(0).getURL(); 
        Double d = response.body().get(0).getStock(); 
        Double aDouble = new Double(d); 
        int i = aDouble.intValue(); 
        qty = String.valueOf(i); 

        if (qty.equals("0")) { 
         stock_status.setText("Not In Stock"); 
         stockAvailibility.setImageResource(R.mipmap.stockunavailable); 
         quantity_txt.setVisibility(View.GONE); 
         qtyText.setVisibility(View.GONE); 
         addCart.setVisibility(View.GONE); 


        } else { 
         stockAvailibility.setImageResource(R.mipmap.stock_image); 
        } 
        code.setText(artCode); 
        price.setText("Euro" + "" + cost); 
        productDescription = (ExpandableTextView) findViewById(R.id.expand_text_view); 
        productDescription.setText(desc); 
        name.setText(itemName); 
        stock.setText("Units :" + " " + qty); 
        Picasso.with(context).load(image_url).resize(240, 120).into(productImage); 
       } else { 
        AlertDialog.Builder builder = new AlertDialog.Builder(this); 
        builder.setMessage(response.body().get(0).getResponse()) 
          .setCancelable(false) 
          .setPositiveButton("OK", new DialogInterface.OnClickListener() { 
           public void onClick(DialogInterface dialog, int id) { 
            //do things 
           } 
          }); 
        AlertDialog alert = builder.create(); 
        alert.show(); 

        //Toast.makeText(context, response.body().get(0).getResponse(), Toast.LENGTH_SHORT).show(); 

       } 
      } 

     } 
    } 

    @Override 
    public void onRetrofitTaskFailure(Throwable t) { 
     stopProgress(); 
     //Toast.makeText(ProductDetailActivity.this,"Fail to load Data",Toast.LENGTH_LONG).show(); 

     finish(); 
    } 

    public static void hideKeyboard(Context ctx) { 
     InputMethodManager inputManager = (InputMethodManager) ctx 
       .getSystemService(Context.INPUT_METHOD_SERVICE); 

     // check if no view has focus: 
     View v = ((Activity) ctx).getCurrentFocus(); 
     if (v == null) 
      return; 

     inputManager.hideSoftInputFromWindow(v.getWindowToken(), 0); 
    } 


} 

のStackTrace

Process: com.jbm.jbmcustomer, PID: 9188 
                    java.lang.NullPointerException: Attempt to invoke virtual method 'android.content.res.Resources$Theme android.content.Context.getTheme()' on a null object reference 
                     at android.app.AlertDialog.resolveDialogTheme(AlertDialog.java:222) 
                     at android.app.AlertDialog.<init>(AlertDialog.java:200) 
                     at android.app.AlertDialog.<init>(AlertDialog.java:196) 
                     at android.app.AlertDialog.<init>(AlertDialog.java:141) 
                     at android.app.ProgressDialog.<init>(ProgressDialog.java:77) 
                     at com.jbm.jbmcustomer.fragment.CartFragment.showProgreass(CartFragment.java:179) 
                     at com.jbm.jbmcustomer.fragment.CartFragment.delItemCart(CartFragment.java:172) 
                     at com.jbm.jbmcustomer.adapter.AdapterShowCart$1.onClick(AdapterShowCart.java:80) 
                     at android.view.View.performClick(View.java:5198) 
                     at android.view.View$PerformClick.run(View.java:21147) 
                     at android.os.Handler.handleCallback(Handler.java:739) 
                     at android.os.Handler.dispatchMessage(Handler.java:95) 
                     at android.os.Looper.loop(Looper.java:148) 
                     at android.app.ActivityThread.main(ActivityThread.java:5417) 
                     at java.lang.reflect.Method.invoke(Native Method) 
                     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 
                     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 
+0

スタックトレースを表示できますか? – azizbekian

+0

@azizbekian私はクラッシュレポートで投稿を編集しました。 Plzチェック –

+0

AdapterShowCartのライン番号80を指摘できますか? – azizbekian

答えて

0

AdapterShowCart行80では、これ以上存在しないコンテキストへの参照を使用してリソースから値を取得しようとします。

おそらく、ProductDetailActivity.thisが原因です。

+0

ProductDetailActivityの代わりにgetBaseContext()を使用する必要がありますか? –

+0

私はあなたの状況を正確に処理することはできませんが、 'AlertDialog'を作成している場所からコールバック' onClick(View view) 'に渡されている' view'のコンテキストを取ることができると思います。 'view.getContext()'でコンテキストを取得できます。 – azizbekian

+0

同じスタックトレースを試していますが、アダプタからdelItemCart()メソッドが呼び出されたときに、progressDialog = new ProgreeDialog(getActivity())に行くプログレスダイアログが最初に呼び出されています。この時点でアクティビティを取得できません。 –

0

getActivityがnullを返す理由は、アクティビティにアタッチされていないアダプタクラス内で初期化されたカートフラグメントのインスタンスを使用しているためです。 問題を解決するには、CartFragmentのCartFragmentインスタンスをアダプタクラスに渡してください。 AdapterShowCartクラスには、カートフラグメントのインスタンスが渡されますが、フラグメント内のdelItemCart(String email、String itemId)の内部で呼び出されるコンストラクタがあります(なぜそのようになったのか分かりませんでした)。

関連する問題