2012-12-21 1 views
2

안녕하세요 어떻게 문자열을 안드로이드에서 bigdecimal로 변환 할 수 있습니까?android에서 bigdecimal로 문자열 변환

이 내 첫번째 활동 :

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 (다음 활동) :

 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 (3 활동)과 같이 :

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 활동에 grandtotal 값을 전달해야합니다. 오류 다음

하지만 내 콘솔 창을 보여줍니다

 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) 

내 코드에서 me.whats 잘못 도움을 주시기 바랍니다.

I wish to need the o/p은 다음과 같습니다

mGrandTotal 값은 마지막 활동에 나의 첫번째 활동 (paypalintegration 활동)에서 통과입니다

mGrandTotal 값이 행 아래로 설정되어 : newPayment.setSubtotal (sPrice);

어떻게 내가 당신을 BigDecimal 번호에 숫자가 아닌 문자열 total을 변환하려고하기 때문에이 오류가 발생하는

+1

'BigDecimal'이 문자열''total ''을 어떤 숫자 값으로 어떻게 변환 할 것으로 예상합니까? –

답변

5

당신 때문에, 당신이 오류로 인해 을 받고 같은 의 BigDecimal (문자열 발) 에 대한의 BigDecimal의 생성자가 같은 BigDecimal를 문자열로 변환 오류가 발생되지는 널 (null)이있다 값이며 BigDecimal로 변환 할 수 없습니다. 너는 이렇게 할 수있다

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

희망은 이것이 ....

+0

이 메서드는 isEmpty() 형식에 대해 정의되지 않았습니다 \t 문자열 이러한 error.my "컴파일러 준수 수준으로 1.6.이 오류를 어떻게 해결할 수 있습니까? – user1897014

+0

**! in.getStringExtra (mGrandTotal) .equals ("") **! in.getStringExtra (mGrandTotal) .isEmpty() **, 내 대답은 .. !!! –

1

알려 do.please 수 있습니다. 일부 숫자 값을 KEY_TOTAL에 지정하십시오.

  static final String KEY_TOTAL = "0.0";//some numeric value here 
+0

xman parsing.thats에서 동적으로 합계 된 값을 추가하여 직접 numaric 값을 쓰지 않았습니다. static final String KEY_TOTAL = "total"; 이러한 내 이전 activities.how 총 가치를 추가 할 수 있습니다 newPayment.setSubtotal (sPrice)에 설정하십시오; – user1897014

+0

@ user1897014 위의 답변은 귀하의 이전 게시물에 대한 것이었다. 이제이 문장'String total = in.getStringExtra (KEY_TOTAL);이 String 값을 얻지 못하고'total'이'null'과 따라서 문제로 할당 될 것입니다. –

+0

내 업데이트 된 질문을 참조하고 이에 대한 해결책을 알려주십시오. – user1897014