在 MainActivity.java 文件的什么地方为 android 添加功能?
Where does one add a functionality in the MainActivity.java file for android?
我目前正在学习 Android 开发,对在 MainActivity.java 文件中的何处添加某些功能感到困惑。
一些背景:
我正在使用 Java 在 Android 中设计一个基本的咖啡应用程序。我在 XML 文件中添加了一个浇头复选框。
<CheckBox
android:id="@+id/checkbox_whipped_cream"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="20dp"
android:text="Whipped Cream"
android:paddingLeft="20dp"
android:textSize="25dp" />
当我在我的应用程序上单击订购按钮时,我应该能够看到这个鲜奶油复选框已勾选并显示在订单摘要中。
那么,通常应该在 .java 文件中的什么地方添加功能?
这是我目前编写的 java 代码:
package android.example.updated_coffee_app;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.CheckBox;
import android.widget.TextView;
import org.w3c.dom.Text;
public class MainActivity extends AppCompatActivity {
int quantity = 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void increment(View view) {
quantity = quantity + 1;
display(quantity);
}
public void decrement(View view) {
quantity = quantity - 1;
display(quantity);
}
public void order(View view) {
CheckBox whippedCream = (CheckBox) findViewById(R.id.checkbox_whipped_cream);
int price = calculatePrice();
String priceMessage = createOrderSummary(price);
displayMessage(createOrderSummary(price));
}
private String createOrderSummary(int price) {
String priceMessage = "Name : Toshali ";
priceMessage = priceMessage + "\nCoffee Quantity: " + quantity;
priceMessage = priceMessage + "\nTotal: $" + price;
priceMessage = priceMessage + "\nThank You!";
return priceMessage;
}
private int calculatePrice() {
int price = 5 * quantity;
return price;
}
public void displayMessage(String message) {
TextView orderSummaryTextView = (TextView) findViewById(R.id.order_summary_text_view);
orderSummaryTextView.setText(message);
}
private void display(int numbers) {
TextView quantityTextView = (TextView) findViewById(R.id.quantityOfCoffee);
quantityTextView.setText(" " + numbers);
}
}
一般来说,我对在哪里添加特定代码感到困惑?用什么方法(功能)?或者我们是否为所有组件制作单独的方法?
在图片中,我应该可以看到订单摘要中的'Whipped Cream? : True'。
Whipped Cream Checkbox option
现在您只在 order
运行时检查复选框的状态。
如果你想立即对选中/取消选中的复选框做出反应,你需要指定一个监听器。
复选框允许您在 XML 中指定一个方法,只要其状态随“android:onClick=
”发生变化,就会调用该方法。
您可以这样更改代码:
在您的 xml 布局中,将此添加到您的 CheckBox
元素:
android:onClick="onCheckboxClicked"
在您的 activity 中,添加这个新方法:
public void onCheckboxClicked(View view) {
boolean checked = ((CheckBox) view).isChecked();
if(checked) {
// TODO: Show that whipped cream is selected
}
else {
// TODO: Show that whipped cream is not selected
}
}
参考:https://developer.android.com/guide/topics/ui/controls/checkbox#java
关于 Android 应用程序代码结构的意见
您应该有单独的方法来响应 UI 事件,例如单击按钮和切换复选框。理想情况下,这些方法应该更新 UI 状态对象。
Google 固执己见的建议是,您的 UI 状态应由 UI 状态数据 classes 确定。在您的示例中,UI 状态 class 将保存价格、数量和所选附加物(鲜奶油)的数据。
按下按钮等事件将更新 UI 状态对象。每当您的 UI 状态发生变化时,您都会更新 UI.
在此处查看本指南:https://developer.android.com/jetpack/guide/ui-layer#define-ui-state
我目前正在学习 Android 开发,对在 MainActivity.java 文件中的何处添加某些功能感到困惑。
一些背景: 我正在使用 Java 在 Android 中设计一个基本的咖啡应用程序。我在 XML 文件中添加了一个浇头复选框。
<CheckBox
android:id="@+id/checkbox_whipped_cream"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="20dp"
android:text="Whipped Cream"
android:paddingLeft="20dp"
android:textSize="25dp" />
当我在我的应用程序上单击订购按钮时,我应该能够看到这个鲜奶油复选框已勾选并显示在订单摘要中。
那么,通常应该在 .java 文件中的什么地方添加功能?
这是我目前编写的 java 代码:
package android.example.updated_coffee_app;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.CheckBox;
import android.widget.TextView;
import org.w3c.dom.Text;
public class MainActivity extends AppCompatActivity {
int quantity = 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void increment(View view) {
quantity = quantity + 1;
display(quantity);
}
public void decrement(View view) {
quantity = quantity - 1;
display(quantity);
}
public void order(View view) {
CheckBox whippedCream = (CheckBox) findViewById(R.id.checkbox_whipped_cream);
int price = calculatePrice();
String priceMessage = createOrderSummary(price);
displayMessage(createOrderSummary(price));
}
private String createOrderSummary(int price) {
String priceMessage = "Name : Toshali ";
priceMessage = priceMessage + "\nCoffee Quantity: " + quantity;
priceMessage = priceMessage + "\nTotal: $" + price;
priceMessage = priceMessage + "\nThank You!";
return priceMessage;
}
private int calculatePrice() {
int price = 5 * quantity;
return price;
}
public void displayMessage(String message) {
TextView orderSummaryTextView = (TextView) findViewById(R.id.order_summary_text_view);
orderSummaryTextView.setText(message);
}
private void display(int numbers) {
TextView quantityTextView = (TextView) findViewById(R.id.quantityOfCoffee);
quantityTextView.setText(" " + numbers);
}
}
一般来说,我对在哪里添加特定代码感到困惑?用什么方法(功能)?或者我们是否为所有组件制作单独的方法?
在图片中,我应该可以看到订单摘要中的'Whipped Cream? : True'。
Whipped Cream Checkbox option
现在您只在 order
运行时检查复选框的状态。
如果你想立即对选中/取消选中的复选框做出反应,你需要指定一个监听器。
复选框允许您在 XML 中指定一个方法,只要其状态随“android:onClick=
”发生变化,就会调用该方法。
您可以这样更改代码:
在您的 xml 布局中,将此添加到您的 CheckBox
元素:
android:onClick="onCheckboxClicked"
在您的 activity 中,添加这个新方法:
public void onCheckboxClicked(View view) {
boolean checked = ((CheckBox) view).isChecked();
if(checked) {
// TODO: Show that whipped cream is selected
}
else {
// TODO: Show that whipped cream is not selected
}
}
参考:https://developer.android.com/guide/topics/ui/controls/checkbox#java
关于 Android 应用程序代码结构的意见
您应该有单独的方法来响应 UI 事件,例如单击按钮和切换复选框。理想情况下,这些方法应该更新 UI 状态对象。
Google 固执己见的建议是,您的 UI 状态应由 UI 状态数据 classes 确定。在您的示例中,UI 状态 class 将保存价格、数量和所选附加物(鲜奶油)的数据。
按下按钮等事件将更新 UI 状态对象。每当您的 UI 状态发生变化时,您都会更新 UI.
在此处查看本指南:https://developer.android.com/jetpack/guide/ui-layer#define-ui-state