我正在尝试开发一个需要关于发票的一些计算的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));
}
}
谢谢你的建议@Irufaan。我会尝试.... – Kash