Search code examples
javaandroidstringconvertersbigdecimal

Convert string to bigdecimal in android


Hi How can i convert string to bigdecimal in android.

This is my 1st activity:

public class ViewCartActivity extends Activity {

String mGrandTotal;
@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.viewcartactivity);

    ListView mLstView1 = (ListView) findViewById(R.id.listView1);
    TextView mTxtViewGrandTotal = (TextView) findViewById(R.id.mTxtViewGrandTotalValue);
    Button mBtnSubmit = (Button) findViewById(R.id.mBtnSubmit);

    ViewCartAdapter mViewCartAdpt = new ViewCartAdapter(
            ViewCartActivity.this);

    mLstView1.setAdapter(mViewCartAdpt);

    if (Constants.mItem_Detail.size() > 0) {
        Double mGTotal = Double.parseDouble(Constants.mItem_Detail.get(0)
                .get(SingleMenuItem.KEY_TOTAL));
        for (int i = 1; i < Constants.mItem_Detail.size(); i++) {
            mGTotal = mGTotal
                    + Double.parseDouble(Constants.mItem_Detail.get(i).get(
                            SingleMenuItem.KEY_TOTAL));
        }

        mGrandTotal = String.valueOf(mGTotal);
        mTxtViewGrandTotal.setText("$" + mGrandTotal);
    }

    mBtnSubmit.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub

             Intent i = new Intent(getApplicationContext(), CustomerLogin.class);
            i.putExtra("GrandTotal", mGrandTotal);
                startActivity(i);

        }

The CustomerLogin.java(next activity):

      String mGrandTotal;
      /** Called when the activity is first created. */
       @Override
       public void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
       setContentView(R.layout.customer_login);
       Bundle b = getIntent().getExtras();

         String total = b.getString("GrandTotal");
         -----
       ------
           if(isUserValidated && isPasswordValidated)
              {
            String s= getIntent().getStringExtra(mGrandTotal);
                Intent intent = new Intent(CustomerLogin.this,PayPalIntegrationActivity.class);
                intent.putExtra(mGrandTotal, s);

           startActivity(intent);

              }

The PayPalIntegrationActivity.java(3rd activity) look like:

public class PayPalIntegrationActivity extends Activity implements OnClickListener {

 String mGrandTotal;
    private PayPal mPayPal;
   private CheckoutButton launchPayPalButton;

@Override
    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_pay_pal_integration);
       -------
        ------
          @Override
    public void onClick(View v) {

            payWithPaypal();
        }


         private PayPalPayment  payWithPaypal() {
                PayPalPayment newPayment = new PayPalPayment();
                Intent in = getIntent();
                String total = in.getStringExtra(mGrandTotal);
                BigDecimal sPrice = new BigDecimal(total);

        newPayment.setSubtotal(sPrice);
        newPayment.setCurrencyType(Currency.getInstance(Locale.US));

I have to pass the grandtotal value to my paypalintegration activity.

But my console window shows following error:

      12-21 05:52:09.571: E/AndroidRuntime(782): FATAL EXCEPTION: main
       12-21 05:52:09.571: E/AndroidRuntime(782): java.lang.NullPointerException
       12-21 05:52:09.571: E/AndroidRuntime(782):   at java.math.BigDecimal.<init>(BigDecimal.java:483)
      12-21 05:52:09.571: E/AndroidRuntime(782):    at com.ssmobileproductions.catalogue.PayPalIntegrationActivity.payWithPaypal(PayPalIntegrationActivity.java:74)
        12-21 05:52:09.571: E/AndroidRuntime(782):  at com.ssmobileproductions.catalogue.PayPalIntegrationActivity.onClick(PayPalIntegrationActivity.java:66)
      12-21 05:52:09.571: E/AndroidRuntime(782):    at android.view.View.performClick(View.java:2408)

please help me.whats wrong in my code.

I wish to need the o/p is:

mGrandTotal value is pass from my 1st activity to last activity(paypalintegration activity)

mGrandTotal value is set to below line: newPayment.setSubtotal(sPrice);

How can i do.please let me know


Solution

  • You are not getting error because of converting String to Bigdecimal as there is an Constructor of Bigdecimal for the same BigDecimal(String val) ,you are getting error due to total has null value and it can not be converted to BigDecimal. you can do like this

          String total="0.0";
          if(in.getStringExtra(mGrandTotal)!=null && !in.getStringExtra(mGrandTotal).isEmpty()){
                total=in.getStringExtra(mGrandTotal);
          }
           BigDecimal sPrice = new BigDecimal(total);
    

    hope this will work for u...!!!