java - 将两个片段的数据发送到 Firebase(片段明智或一次性)
问题描述
我在一项活动中有两个片段。在第一个片段中,我有姓名、电子邮件、性别和电话号码等字段,然后通过下一个按钮替换为第二个片段,在第二个片段中,我有一个密码并确认密码字段。现在我想将数据发送到firebase片段或一次发送两个片段的数据(通过按下第二个片段上的注册按钮)。但不知道该怎么做
//第一个片段
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/purple_200"
tools:context=".CustomerRegisterFragment">
<ImageView
android:id="@+id/imageView"
android:layout_width="131dp"
android:layout_height="46dp"
android:src="@drawable/logo"
android:textAlignment="center"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.18"
tools:ignore="MissingConstraints"
android:contentDescription="TODO" />
<TextView
android:id="@+id/textViewCustomerDetails"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:fontFamily="@font/courbd"
android:text="@string/personal_details"
android:textColor="@color/black"
android:textSize="24sp"
android:textStyle="bold"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.28"
tools:ignore="MissingConstraints" />
<LinearLayout
android:id="@+id/linearLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:paddingStart="20dp"
android:paddingEnd="20dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.439"
tools:ignore="MissingConstraints">
<TextView
android:id="@+id/textViewUserName"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="8dp"
android:fontFamily="@font/courbd"
android:text="@string/user_name"
android:textColor="@color/black"
android:textSize="18sp"
android:textStyle="bold" />
<EditText
android:id="@+id/editTextUserName"
android:layout_width="282dp"
android:layout_height="wrap_content"
android:layout_marginStart="30dp"
android:backgroundTint="@color/black"
android:fontFamily="@font/courbd"
android:inputType="textPersonName"
android:paddingBottom="4dp"
android:singleLine="true"
android:textColor="@color/black" />
</LinearLayout>
<LinearLayout
android:id="@+id/linearLayout1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:orientation="horizontal"
android:paddingStart="20dp"
android:paddingEnd="20dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:ignore="MissingConstraints">
<TextView
android:id="@+id/textViewUserEmail"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:fontFamily="@font/courbd"
android:text="@string/user_email"
android:textColor="@color/black"
android:textSize="18sp"
android:textStyle="bold" />
<EditText
android:id="@+id/editTextUserEmail"
android:layout_width="282dp"
android:layout_height="wrap_content"
android:layout_marginStart="30dp"
android:backgroundTint="@color/black"
android:fontFamily="@font/courbd"
android:inputType="textEmailAddress"
android:paddingBottom="4dp"
android:singleLine="true"
android:textColor="@color/black" />
</LinearLayout>
<LinearLayout
android:id="@+id/linearLayout2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:paddingStart="20dp"
android:paddingEnd="20dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/linearLayout1"
tools:ignore="MissingConstraints">
<TextView
android:id="@+id/textViewUserPhone"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:fontFamily="@font/courbd"
android:text="Phone #:"
android:textColor="@color/black"
android:textSize="18sp"
android:textStyle="bold" />
<EditText
android:id="@+id/editTextUserPhone"
android:layout_width="282dp"
android:layout_height="wrap_content"
android:layout_marginStart="10dp"
android:backgroundTint="@color/black"
android:fontFamily="@font/courbd"
android:inputType="phone"
android:paddingBottom="4dp"
android:singleLine="true"
android:textColor="@color/black" />
</LinearLayout>
<LinearLayout
android:id="@+id/linearLayout3"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:paddingStart="20dp"
android:paddingEnd="20dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/linearLayout2"
tools:ignore="MissingConstraints">
<TextView
android:id="@+id/textViewUserGender"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="15dp"
android:fontFamily="@font/courbd"
android:text="@string/user_gender"
android:textColor="@color/black"
android:textSize="18sp"
android:textStyle="bold" />
<CheckBox
android:id="@+id/male"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:buttonTint="@color/black"
android:checked="true"
android:clickable="false"
android:focusableInTouchMode="true"
android:fontFamily="@font/courbd"
android:text="@string/user_gender_male"
android:textColor="@color/black" />
<CheckBox
android:id="@+id/female"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:buttonTint="@color/black"
android:checked="false"
android:clickable="false"
android:fontFamily="@font/courbd"
android:text="@string/user_gender_female"
android:textColor="@color/black" />
<CheckBox
android:id="@+id/other"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:buttonTint="@color/black"
android:checked="false"
android:clickable="false"
android:fontFamily="@font/courbd"
android:text="@string/user_gender_other"
android:textColor="@color/black" />
</LinearLayout>
<androidx.appcompat.widget.AppCompatButton
android:id="@+id/btnRegisterCustomer"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="71dp"
android:layout_marginBottom="120dp"
android:background="@drawable/button_style"
android:text="@string/btn_next"
android:textAllCaps="false"
android:textColor="@color/black"
android:textSize="18sp"
android:textStyle="bold"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/linearLayout3" />
</androidx.constraintlayout.widget.ConstraintLayout>
//第二个片段
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:background="@color/purple_200"
tools:context=".CustomerRegisterFragment1">
<ImageView
android:id="@+id/imageView"
android:layout_width="131dp"
android:layout_height="46dp"
android:src="@drawable/logo"
android:textAlignment="center"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.18"
tools:ignore="MissingConstraints"
android:contentDescription="TODO" />
<TextView
android:id="@+id/textViewCustomerPassTitle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:fontFamily="@font/courbd"
android:text="@string/c_password"
android:textColor="@color/black"
android:textSize="24sp"
android:textStyle="bold"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.28"
tools:ignore="MissingConstraints" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/CustomerRegisterFragment1.linearLayout"
android:layout_centerVertical="true"
android:layout_marginBottom="288dp"
android:orientation="vertical"
android:paddingStart="20dp"
android:paddingEnd="20dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textViewCustomerPassTitle"
tools:ignore="MissingConstraints">
<EditText
android:id="@+id/editTextCustomerPassword"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:backgroundTint="#695547"
android:fontFamily="@font/courbd"
android:hint="@string/customer_password"
android:inputType="textPassword"
android:textColor="@color/black"
android:textColorHint="#A88973" />
<EditText
android:id="@+id/editTextCustomerConfirmPassword"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:backgroundTint="#695547"
android:fontFamily="@font/courbd"
android:hint="@string/cconfirm_password"
android:inputType="textPassword"
android:textColor="@color/black"
android:textColorHint="#A88973" />
</LinearLayout>
<androidx.appcompat.widget.AppCompatButton
android:id="@+id/btnRegisterCustomer"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="67dp"
android:layout_marginBottom="123dp"
android:background="@drawable/button_style"
android:text="@string/btn_register_client"
android:textAllCaps="false"
android:textColor="@color/black"
android:textSize="18sp"
android:textStyle="bold"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.498"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/CustomerRegisterFragment1.linearLayout"
app:layout_constraintVertical_bias="0.229" />
</androidx.constraintlayout.widget.ConstraintLayout>
解决方案
- 界面; 界面:
public interface FragmentInterface {
String getName();
String getEmail();
String getPassword();
}
分段:
public class FragmentA extend Fragment implements FragmentInterface{}
public class FragmentB extend Fragment implements FragmentInterface{}
xxx活动:
FragmentInterface fia = (FragmentInterface)FragmentA;
FragmentInterface fib = (FragmentInterface)FragmentB;
获取字段:
String name = fia.getName();
String pw = fib.getPassword();
广播接收器
全局单例