dimanche 11 mars 2018

Passing a checkbox state from XML to Java in Android Studio

I am new to android development, I am trying to pass a checkbox state using findViewById method, but the app gets crashed:

Here is the xml code:

<CheckBox
        android:id="@+id/toppings_checkbox"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="16sp"
        android:layout_marginTop="8sp"
        android:layout_marginBottom="16sp"
        android:text="Whipped Cream"
        android:textColor="#FFFFFF"
        android:textSize="20sp"
        android:paddingLeft="16dp"
        android:buttonTint="#FFFFFF"
        />

and here is the java statement to link this checkbox with java:

public class MainActivity extends AppCompatActivity {
CheckBox hasWhippedCream = (CheckBox) findViewById(R.id.toppings_checkbox);
boolean checked = hasWhippedCream.isChecked();
int quantity = 0;
int pricePerCup = 5;
int toppingPrice = 0;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
}

/**
 * This method is called when the + button is clicked
 */
public void Increment(View view) {
    quantity = quantity + 1;
    displayQuantity(quantity);
}

/**
 * This method is called when the - button is clicked
 */
public void Decrement(View view) {
    quantity = quantity - 1;
    if (quantity < 1) {
        quantity = 1;
    }
    displayQuantity(quantity);
}

/**
 * This method is called when the order button is clicked.
 */
public void submitOrder(View view) {
    displayMessage(createOrderSummary(calculatePrice()));
}

/**
 * Calculates the price of the order.
 */
private int calculatePrice() {

    if (checked = true) {
        toppingPrice = 2;
    } else {
        toppingPrice = 0;
    }
    return quantity * (pricePerCup + toppingPrice);
}

/**
 * This method displays summary of the given order.
 *
 * @param total is the total price of the order.
 *              * @return text summary
 */

private String createOrderSummary(int total) {

    String summary = "Name: Captain Samir\n";
    summary += "Add whipped cream? " + checked + "\n";
    summary += "Quantity: " + quantity + " Cups\n";
    summary += "Total: $" + total + "\n";
    summary += "Thank You!";
    return summary;
}

/**
 * This method displays the given quantity value on the screen.
 */
private void displayQuantity(int value) {
    TextView quantityTextView = (TextView) findViewById(R.id.quantity_text_view);
    quantityTextView.setText("" + value);
}

/**
 * This method displays the given text on the screen.
 */
private void displayMessage(String message) {
    TextView orderSummaryTextView = (TextView) findViewById(R.id.order_summary_text_view);
    orderSummaryTextView.setText(message);
}

}

and then I use the variable checked through the program. any idea why the app crashes once starts up?




Aucun commentaire:

Enregistrer un commentaire