2017-08-29 40 views
0

我正在嘗試開發一個需要關於發票的一些計算的android移動應用程序。當我需要將項目添加到發票時,我需要通過單擊按鈕轉到另一個表單(這是另一個活動)。填寫完表格後,只有該特定項目的價值纔會發票。同樣,如果我需要X件商品來購買,我需要將這個商品表格填充X次。每件商品的金額應單獨顯示在發票中。最後,通過點擊發票中的按鈕,可以找到發票中的總金額。如何存儲在android中的活動之間傳遞的值並將這些值用於進一步計算

這是我真正嘗試的,但我可以只傳遞一個值來從項目活動的發票形式。當我再次點擊添加按鈕並填寫物品表單並開始發票時,先前輸入的值將消失。我需要保留髮票表單中的所有值,最後需要計算髮票中的總額。 請幫我解決這個問題。我已閱讀了許多關於此的文章和問題,但我找不到解決此問題的更好方法。我十分感謝你的幫助..

第一個XML文件是activity_invoice.XML文件 第二張發票的活動,第三是activity_items.xml和第四是項目活動我在你的代碼看到

<!--Click this button to goto Items Activity--> 

        <Button 
        android:id="@+id/addItemBtn" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:text="Add a New Item" 
        android:background="@drawable/buttonshapes" 
        /> 

        <TextView 
        android:id="@+id/valueofItemText" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:text="Sub Value" 
       /> 

     <!--Get the final value of Item activity here--> 

        <EditText 
        android:id="@+id/valueofItemEdit" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:hint="Sub Value" 
       /> 


      <!--Button to find the discount of invoice--> 

        <Button 
        android:id="@+id/invoiceDiscountBtn" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content"    
        android:text="Total" 
        /> 

    <!--Enter the discount value of Invoivce activity--> 

        <EditText 
        android:id="@+id/editDiscount" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:ems="10" 
        android:inputType="numberDecimal" 
        /> 

     <!--get the total sum of all items values in this Invoice activity taken from items Activity--> 

        <Button 
        android:id="@+id/invoiceTotaltBtn" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content"    
        android:text="Total" 
        /> 

    <!--Display the total of invoice--> 

        <EditText 
        android:id="@+id/invoiceTotal" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:ems="10" 
        android:inputType="numberDecimal" 
        /> 





     public class Invoice extends AppCompatActivity {   


     Button addItemBtn, discountBtn, totalBtn; 
     TextView billedtoUser; 
     EditText eSubTotal, eDiscount, eTotal; 

     double invoiceDiscount, subTotalValue, invoiceTotal, subtractDis; 


     @Override 
     protected void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.activity_invoice); 
      setTitle("Invoice"); 



      /*----------------------Add item description--------------------*/ 

      addItemBtn = (Button) findViewById(R.id.addItemBtn); 
      addItemBtn.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View view) { 
        addItemDescription(); 
       } 
      }); 



      /*-----------------get Items Activity Value to Invoice Activity -------------------------*/ 
      eSubTotal = (EditText) findViewById(R.id.valueofItemText); 
      Intent myIntent = getIntent(); 
      if (myIntent.hasExtra("ItemValue")) { 
       valueofItemText.setText(" $" + myIntent.getStringExtra("ItemValue")); 
      } 


     /*--------------------define addItemDescription------------------------*/ 

     private void addItemDescription() { 
      Intent intent = new Intent(Invoice.this, Items.class); 
      startActivity(intent); 
     } 




     <?xml version="1.0" encoding="utf-8"?> 
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
     xmlns:tools="http://schemas.android.com/tools" 
     android:orientation="vertical" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent"> 

     <LinearLayout 
      android:layout_width="wrap_content" 
      android:layout_height="match_parent" 
      android:orientation="vertical" 
      android:weightSum="2"> 

        <ScrollView 
       android:layout_width="576dp" 
       android:layout_height="match_parent"> 

       <LinearLayout 
        android:layout_width="match_parent" 
        android:layout_height="wrap_content" 
        android:layout_marginTop="20dp" 
        android:layout_weight="0.03" 
        android:orientation="vertical" 
        android:weightSum="1"> 


        <LinearLayout 
         android:id="@+id/firstLayout" 
         android:layout_width="match_parent" 
         android:layout_height="wrap_content" 
         android:layout_marginTop="0dp" 
         android:orientation="horizontal" 
         android:weightSum="2"> 


         <TextView 
          android:id="@+id/textView" 
          android:layout_width="0dp" 
          android:layout_height="50dp" 
          android:layout_marginRight="10dp" 
          android:layout_weight="0.6" 
          android:gravity="center_vertical" 
          android:paddingLeft="10dp" 
          android:text="Item Code" 
          android:textAppearance="?android:attr/textAppearanceMedium" 
          android:textColor="#FF042A51" /> 

         <EditText 
          android:id="@+id/itemCode" 
          android:layout_width="0dp" 
          android:layout_height="50dp" 
          android:layout_marginLeft="10dp" 
          android:layout_weight="1.12" 
          android:imeOptions="actionNext" 
          android:maxLines="1" 
          android:paddingLeft="10dp" 
          android:textColor="#000000" 
          android:theme="@style/MyEditTextTheme" /> 
        </LinearLayout> 



        <LinearLayout 
         android:id="@+id/secondLayout" 
         android:layout_width="match_parent" 
         android:layout_height="wrap_content" 
         android:layout_marginTop="10dp" 
         android:orientation="horizontal" 
         android:weightSum="2"> 



         <TextView 
          android:id="@+id/textView4" 
          android:layout_width="0dp" 
          android:layout_height="50dp" 
          android:layout_marginRight="10dp" 
          android:layout_weight="0.6" 
          android:gravity="center_vertical" 
          android:paddingLeft="10dp" 
          android:text="Item Name" 
          android:textAppearance="?android:attr/textAppearanceMedium" 
          android:textColor="#FF042A51" /> 

         <EditText 
          android:id="@+id/itemName" 
          android:layout_width="0dp" 
          android:layout_height="50dp" 
          android:layout_marginLeft="10dp" 
          android:layout_weight="1.12" 
          android:imeOptions="actionNext" 
          android:maxLines="1" 
          android:paddingLeft="10dp" 
          android:textColor="#FF0D68C4" 
          android:theme="@style/MyEditTextTheme" /> 
        </LinearLayout> 



        <LinearLayout 
         android:id="@+id/fourthLayout" 
         android:layout_width="match_parent" 
         android:layout_height="wrap_content" 
         android:layout_marginTop="10dp" 
         android:orientation="horizontal" 
         android:weightSum="2"> 

         <TextView 
          android:id="@+id/textView5" 
          android:layout_width="0dp" 
          android:layout_height="50dp" 
          android:layout_marginRight="10dp" 
          android:layout_weight="0.6" 
          android:gravity="center_vertical" 
          android:paddingLeft="10dp" 
          android:text="Quantity" 
          android:textAppearance="?android:attr/textAppearanceMedium" 
          android:textColor="#FF042A51" /> 

<!--Enter the number of Items purchasing --> 
         <EditText 
          android:id="@+id/quantity" 
          android:layout_width="0dp" 
          android:layout_height="50dp" 
          android:layout_marginLeft="10dp" 
          android:layout_weight="1.11" 
          android:imeOptions="actionNext" 
          android:inputType="numberDecimal" 
          android:maxLines="1" 
          android:paddingLeft="10dp" 
          android:textColor="#FF0D68C4" 
          android:theme="@style/MyEditTextTheme" /> 
        </LinearLayout> 


        <LinearLayout 
         android:id="@+id/sixthLayout" 
         android:layout_width="match_parent" 
         android:layout_height="wrap_content" 
         android:layout_marginTop="10dp" 
         android:orientation="horizontal" 
         android:weightSum="2"> 



         <TextView 
          android:layout_width="0dp" 
          android:layout_height="50dp" 
          android:layout_marginRight="10dp" 
          android:layout_weight="0.6" 
          android:gravity="center_vertical" 
          android:paddingLeft="10dp" 
          android:text="Unit Cost" 
          android:textAppearance="?android:attr/textAppearanceMedium" 
          android:textColor="#FF042A51" /> 


<!--Enter value of one item--> 
          <EditText 
          android:id="@+id/unitCost" 
          android:layout_width="0dp" 
          android:layout_height="50dp" 
          android:layout_marginLeft="10dp" 
          android:layout_weight="1.12" 
          android:imeOptions="actionNext" 
          android:inputType="numberDecimal" 
          android:maxLines="1" 
          android:paddingLeft="10dp" 
          android:textColor="#000000" 
          android:theme="@style/MyEditTextTheme" /> 
        </LinearLayout> 

        <LinearLayout 
         android:id="@+id/seventhLayout" 
         android:layout_width="match_parent" 
         android:layout_height="wrap_content" 
         android:layout_marginTop="10dp" 
         android:orientation="horizontal" 
         android:weightSum="2"> 


         <TextView 
          android:layout_width="0dp" 
          android:layout_height="50dp" 
          android:layout_marginRight="10dp" 
          android:layout_weight="0.6" 
          android:gravity="center_vertical" 
          android:paddingLeft="10dp" 
          android:text="Discount (%)" 
          android:textAppearance="?android:attr/textAppearanceMedium" 
          android:textColor="#FF042A51" /> 

<!--Enter discount for items If discount is there--> 
         <EditText 
          android:id="@+id/discount" 
          android:layout_width="0dp" 
          android:layout_height="50dp" 
          android:layout_marginLeft="10dp" 
          android:layout_weight="1.12" 
          android:imeOptions="actionNext" 
          android:inputType="numberDecimal" 
          android:maxLines="1" 
          android:paddingLeft="10dp" 
          android:textColor="#000000" 
          android:theme="@style/MyEditTextTheme" /> 
        </LinearLayout> 



        <LinearLayout 
         android:id="@+id/eigthLayout" 
         android:layout_width="match_parent" 
         android:layout_height="wrap_content" 
         android:layout_marginTop="10dp" 
         android:orientation="horizontal" 
         android:weightSum="2"> 

     <!--Button to find the amount for items-->     
         <Button 
          android:id="@+id/amountbtn" 
          android:layout_width="0dp" 
          android:layout_height="50dp" 
          android:layout_marginRight="10dp" 
          android:layout_weight="0.6" 
          android:gravity="center_vertical" 
          android:paddingLeft="10dp" 
          android:text="Line Value" 
          android:textAppearance="?android:attr/textAppearanceMedium" 
          android:textColor="#FF042A51" /> 

    <!--Display the amount of Items--> 
         <EditText 
          android:id="@+id/amount" 
          android:layout_width="0dp" 
          android:layout_height="50dp" 
          android:layout_marginLeft="10dp" 
          android:layout_weight="1.12" 
          android:imeOptions="actionNext" 
          android:inputType="numberDecimal" 
          android:maxLines="1" 
          android:paddingLeft="10dp" 
          android:textColor="#000000" 
          android:theme="@style/MyEditTextTheme" /> 
        </LinearLayout> 

    <!--Submit this value to Invoice Activity using this button--> 
        <Button 
         android:id="@+id/submitDescription" 
         android:layout_width="match_parent" 
         android:layout_height="50dp" 
         android:layout_marginTop="15dp" 
         android:background="@drawable/roundbtn" 
         android:gravity="center" 
         android:text="Done" 
         android:textAppearance="?android:attr/textAppearanceMedium" 
         android:textColor="#ffffff" 
         android:textStyle="bold" 
         android:minWidth="20dp" /> 
       </LinearLayout> 

      </ScrollView> 

     </LinearLayout> 

    </LinearLayout> 






public class Items extends AppCompatActivity { 


    Button descriptionSubmitBtn, finalAmountBtn; 
    EditText iCode, iName; 

    EditText qty, uCost, discount, famountText; 

    double unitCost, discountValue, quantity; 
    double quntUniCost, subtractDis, finalTotalAmount; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_view_items_description); 
     setTitle("Item Description"); 

     descriptionSubmitBtn = (Button) findViewById(R.id.submitDescription); 
     iCode = (EditText) findViewById(R.id.itemCode); 
     iName = (EditText) findViewById(R.id.itemName); 

     /*--------------------variables to find discount for each item---------------------------*/ 
     qty = (EditText) findViewById(R.id.quantity); 
     uCost = (EditText) findViewById(R.id.unitCost); 
     discount = (EditText) findViewById(R.id.discount); 
     famountText = (EditText) findViewById(R.id.amount); 
     finalAmountBtn = (Button) findViewById(R.id.amountbtn); 


     /*------------------calculateDiscount-------------------------------------*/ 

     finalAmountBtn.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       calculateDiscount(); 
      } 
     }); 


     /*--------------------------sendData----------------------------------------*/ 
     descriptionSubmitBtn.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       sendData(); 
      } 
     }); 

    } 


    /*------------------------------define sendData method-----------------------------*/ 

    private void sendData() { 
     String str1 = famountText.getText().toString(); 
     Intent intent = new Intent(Items.this,Invoice.class); 
     intent.putExtra("ItemValue", str1); //key Value pair 
     startActivity(intent); 


    } 

    /*--------------------define calculateDiscount method-------------------------------*/ 
    private void calculateDiscount() { 
     quantity = Double.parseDouble((qty.getText().toString())); 
     unitCost = Double.parseDouble(uCost.getText().toString()); 
     discountValue = Double.parseDouble(discount.getText().toString()); 




     quntUniCost = quantity * unitCost; 
     subtractDis = 100 - discountValue; 
     finalTotalAmount = (subtractDis * quntUniCost)/100; 

     //round to two decimal points 
     famountText.setText(String.format("%.2f", finalTotalAmount)); 
    } 

} 

回答

0

一個問題是你正在使用輸入整數或小數。所以即使通過它,你也必須考慮類型。另外,在計算之後並將值設置爲TextView之前,您必須將其轉換爲字符串。你不能做任何數學計算,比如使用字符串進行加,減等操作。

要獲得Int Intent //// getIntExtra(「key」,0); 獲取字符串/// getStringEtra(「key」); 得到雙///做研究

在Invoice類中你已經做了明確的意圖而沒有傳遞任何價值的意圖..基本上,每次你開始新的意圖而不結束你的會話有值,那麼你必須永遠通過兩個意圖之間的值,

首先你將價值傳遞給下一個活動,然後你從意圖得到的價值,做任何你想做的計算,並再次結果你必須傳遞到第一個活動使用意圖,再次從第一次活動,你必須從第二次活動中通過的意圖中獲得價值,並再次將該價值和新價值發送給第二次活動,,我知道它有點駭人聽聞,但值得一試,

////ActivityOne.java 
 

 
    public void onClick(View view) { 
 
       Intent i = new Intent(getApplicationContext(), ActivityTwo.class); 
 
       i.putExtra("Value1", 1);  
 
       // callback via this code 
 
       startActivity(i); 
 
      } 
 
     
 
     ////ActivityTwo.java 
 

 
      eSubTotal = (EditText) findViewById(R.id.valueofItemText); 
 
      Intent myIntent = getIntent(); 
 
      if (myIntent.hasExtra("Value1")) { 
 
       valueofItemText.setText(" $" + String.ValueOf(myIntent.getIntExtra("ItemValue", 0))); 
 
      } 
 
     
 
     public void onClick(View view) { 
 
       Intent i = new Intent(getApplicationContext(), ActivityOne.class); 
 
       i.putExtra("Answer1", "Android By Irufan"); 
 
       startActivity(i); 
 
      } 
 

 
    ////ActivityOne.java 
 

 
      String answer1 ; 
 
      Intent i = getIntent(); 
 
      answerIntent = i.getStringExtra("Answer1"); 
 

 
    public void onClick(View view) { 
 
       Intent i = new Intent(getApplicationContext(), ActivityTwo.class); 
 
       i.putExtra("Value2", 1); 
 
       i.putExtra("Answer1", answerIntent); 
 
       
 
       startActivity(i); 
 
      }

+0

謝謝你的建議@Irufaan。我會嘗試.... – Kash

2

您可以使用listView並將項目添加到列表,並在發票活動顯示它們。目前,您正在調用intent.putextra();中的一個值,當您再次調用發票活動時會刷新該值,因爲onCreate()正在被調用,並且您再次創建視圖。 另一種選擇是使用SharedPreferences來存儲您的物品,然後將其顯示在發票活動中。

+0

謝謝你馬利克,我會嘗試這種方式... – Kash

+0

@卡什讓我知道,如果你需要任何進一步的援助。謝謝 –

+0

謝謝你的幫助...我已經理解了你提到的概念,但我沒有清楚的想法如何使用這個,請如果你能解釋我一點點使用代碼snipt – Kash

相關問題