java - 在android中将字符串转换为bigdecimal

标签 java android string converter bigdecimal

您好,我如何在 android 中将字符串转换为 bigdecimal。

这是我的第一个 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);

        }

CustomerLogin.java(下一个 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);

              }

PayPalIntegrationActivity.java(第三个 Activity )看起来像:

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

我必须将总计值传递给我的 paypalintegration Activity 。

但是我的控制台窗口显示以下错误:

      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)

请帮助我。我的代码有什么问题。

我希望需要的 o/p 是:

mGrandTotal 值是从我的第一个 Activity 传递到最后一个 Activity (paypalintegration Activity )

mGrandTotal 值设置为以下行:newPayment.setSubtotal(sPrice);

我该怎么做,请告诉我

最佳答案

您不会因为将 String 转换为 Bigdecimal 而出错,因为同样有一个 Bigdecimal 的构造函数 BigDecimal(字符串值) ,由于 total 具有 null 值且无法转换为 BigDecimal,您会收到错误消息。你可以这样做

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

希望这对你有用...!!!

关于java - 在android中将字符串转换为bigdecimal,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13984581/

相关文章:

java - Talend 中庞大数据集的处理速度缓慢

java - 使用 JSON_TABLE 和 Java 在 Oracle DB 上同时查询 JSON

android延迟加载不在手机上显示图像或显示并且速度很慢

java - 使用字符串指向某个列表(或数组)

java - 简单的 KeyListener 应用程序出现错误

ubuntu - 安装 java - 我应该使用 .rpm 文件还是 .tar.gz?

android - AVD 管理器不会将我的 HTC Hero 手机检测为虚拟设备

java - LinearLayout问题[Android]

java - 如何提取JSON字符串数据?

java - 在另一个字符串中查找具有模式 ALXXXXX 的字符串的正则表达式是什么?