java - 将 XML 放入嵌套布局后,数学逻辑停止工作

标签 java android

我刚刚开始 Android 开发。将 TextView 和增量、减量按钮放入嵌套布局后,“订单”按钮停止工作。当我尝试在没有嵌套布局的情况下运行它时,订单按钮起作用了。但有了它,递增和递减按钮才起作用。

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

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:padding="8dp"
        android:text="Quantity"
        android:textAllCaps="true" />

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">

        <Button
            android:layout_width="48dp"
            android:layout_height="48dp"
            android:layout_marginLeft="8dp"
            android:layout_marginTop="8dp"
            android:onClick="decrement"
            android:text="-" />

        <TextView
            android:id="@+id/quantity_text_view"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:paddingLeft="8dp"
            android:paddingRight="8dp"
            android:paddingTop="8dp"
            android:text="2"
            android:textColor="@android:color/black"
            android:textSize="16sp" />

        <Button

            android:layout_width="48dp"
            android:layout_height="48dp"
            android:layout_margin="8dp"
            android:onClick="increment"
            android:text="+" />


    </LinearLayout>


    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:padding="8dp"
        android:text="Price"
        android:textAllCaps="true" />

    <TextView
        android:id="@+id/price_text_view"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:padding="8dp"
        android:text="10"
        android:textColor="@android:color/black"
        android:textSize="16sp" />


    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_margin="8dp"
        android:onClick="submitOrder"
        android:text="ORDER" />


</LinearLayout>

这是Java代码

package com.example.android.justjava;



import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.TextView;

import java.text.NumberFormat;

/**
 * This app displays an order form to order coffee.
 */
public class MainActivity extends AppCompatActivity {

    int quantity = 2;

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

    /**
     * This method is called when the order button is clicked.
     */
    public void submitOrder(View view) {
        displayPrice(quantity * 10);
    }

    /**
     *This method is called when the add/minus button is called
     */

    public void increment(View view) {
        quantity = quantity + 1;
        display(quantity);
    }

    public void decrement(View view) {
        quantity = quantity - 1;
        display(quantity);
    }
    /**
     * This method displays the given quantity value on the screen.
     */
    private void display(int number) {
        TextView quantityTextView = (TextView) findViewById(R.id.quantity_text_view);
        quantityTextView.setText("" + number);
    }

    /**
     * This method displays the given price on the screen.
     */
    private void displayPrice(int number) {
        TextView priceTextView = (TextView) findViewById(R.id.price_text_view);
        priceTextView.setText(NumberFormat.getCurrencyInstance().format(number));
    }
}

最佳答案

直接用 Java 初始化监听器:

private TextView quantityView;
private TextView priceView;

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

    initViews();   
}

private void initViews() {
    this.quantityView = findViewById(R.id.quantity_text_view);
    this.priceView = findViewById(R.id.price_text_view);

    TextView decrementTextView = findViewById(R.id.decrement_view);
    decrementTextView.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            decrement();
        }
    });

    Button incrementView = findViewById(R.id.increment_view);
    incrementView.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            increment();
        }
    });

    Button submitOrderView = findViewById(R.id.submit_order_view);
    submitOrderView.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            submitOrder();
        }
    });
}

public void submitOrder() {
    displayPrice(quantity * 10);
}

/**
 *This method is called when the add/minus button is called
 */

public void increment() {
    quantity = quantity + 1;
    display(quantity);
}

public void decrement() {
    quantity = quantity - 1;
    display(quantity);
}
/**
 * This method displays the given quantity value on the screen.
 */
private void display(int number) {
    quantityView.setText("" + number);
}

/**
 * This method displays the given price on the screen.
 */
private void displayPrice(int number) {
    priceView.setText(NumberFormat.getCurrencyInstance().format(number));
}



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

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:padding="8dp"
        android:text="Quantity"
        android:textAllCaps="true" />

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">

        <Button
            android:id="@+id/decrement_view"
            android:layout_width="48dp"
            android:layout_height="48dp"
            android:layout_marginLeft="8dp"
            android:layout_marginTop="8dp"
            android:text="-" />

        <TextView
            android:id="@+id/quantity_text_view"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:paddingLeft="8dp"
            android:paddingRight="8dp"
            android:paddingTop="8dp"
            android:text="2"
            android:textColor="@android:color/black"
            android:textSize="16sp" />

        <Button
           android:id="@+id/increment_view"
           android:layout_width="48dp"
           android:layout_height="48dp"
           android:layout_margin="8dp"
           android:text="+" />

     </LinearLayout>


    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:padding="8dp"
        android:text="Price"
        android:textAllCaps="true" />

    <TextView
        android:id="@+id/price_text_view"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:padding="8dp"
        android:text="10"
        android:textColor="@android:color/black"
        android:textSize="16sp" />

    <Button
        android:id="@+id/submit_order_view"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_margin="8dp"
        android:text="ORDER" />

</LinearLayout>

关于java - 将 XML 放入嵌套布局后,数学逻辑停止工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50990881/

相关文章:

java - JFrame JPanel GUI 中的 CardLayout

java - 使用 artifactory/maven 的配置和属性文件的最佳实践

android - 找不到 com.android.tools.build :gradle:3. 2

android - Android JSON 中的 SessionExpiredException 错误

android - 如何与不受支持的广告公司一起使用 AdWhirl?

iphone - Rails3 和 Devise 与 Iphone/Android/Wp7 应用程序一起工作

java - 针对 HashMap 中的所有值查找值

Java 自定义异常标准

JAVA HOME 设置为 1.8 但 eclipse 使用 java 9

Android - 创建一个主题 apk 以在其他应用程序中使用