@NonNull
  @Override
  public Dialog onCreateDialog(Bundle savedInstanceState) {
    AbstractRootActivity activity = (AbstractRootActivity) getActivity();

    AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
    Object[] rawVals = Cart.ShippingMethods.getLabels().keySet().toArray();
    final String[] values = Arrays.copyOf(rawVals, rawVals.length, String[].class);
    final ShippingListArrayAdapter adapter =
        new ShippingListArrayAdapter(getActivity(), R.layout.shipping_method_list_item, values);

    builder
        .setTitle(getActivity().getString(R.string.select_shipping_method))
        .setAdapter(
            adapter,
            new DialogInterface.OnClickListener() {
              @Override
              public void onClick(DialogInterface dialog, int which) {
                Log.d(TAG, "Selected shipping method " + values[which]);
                listener.onDialogSelect(ShippingMethodDialogFragment.this, values[which]);
              }
            });

    return builder.create();
  }
  @Override
  public void onStart() {
    Log.d(TAG, "onStart");
    super.onStart();
    getActivity().setTitle("Shipping and payment methods");

    if (cart.shipping_method == null
        || cart.shipping_method.equals("")
        || !Cart.ShippingMethods.getLabels().containsKey(cart.shipping_method)) {
      cart.shipping_method = Cart.ShippingMethods.MAIL;
    }
    if (cart.payment_method == null
        || cart.payment_method.equals("")
        || !Cart.PaymentMethods.getLabels().containsKey(cart.payment_method)) {
      cart.payment_method = Cart.PaymentMethods.CREDIT_CARD;
    }
    shippingMethodField.setText(Cart.ShippingMethods.getLabel(cart.shipping_method));
    paymentMethodField.setText(Cart.PaymentMethods.getLabel(cart.payment_method));
  }
 @Override
 public void onDialogSelect(ShippingMethodDialogFragment dialog, String method) {
   shippingMethodField.setText(Cart.ShippingMethods.getLabel(method));
   cart.shipping_method = method;
 }