所以基本上我得到了一个转换错误,我试图用相同类型的小部件和类名绑定id。在java文件中,我已经用TextInputEditText而不是TextInputLayout声明了变量,并用TextInputEditText进行了转换,但似乎不起作用。无论如何,这是我的活动代码:
public class Match extends AppCompatActivity {
TextInputEditText nomstade,prix,date,nbreplace;
Button submitbutton;
DatabaseReference matchDBRef;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.creatematch);
nomstade = (TextInputEditText) findViewById(R.id.nomstade);
prix =(TextInputEditText)findViewById(R.id.prix);
submitbutton=findViewById(R.id.submitbutton);
matchDBRef= FirebaseDatabase.getInstance().getReference().child("Matchs");
submitbutton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
insertMatchData();
}
});
}
private void insertMatchData(){
String Stade= nomstade.getText().toString();
String Prix= prix.getText().toString();
Matchs matchs= new Matchs(Stade,Prix);
matchDBRef.push().setValue(matchs);
Toast.makeText(Match.this,"Match created",Toast.LENGTH_SHORT).show();
}
}
其对应的XML代码为:
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/nomstade"
style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="32dp"
android:layout_marginTop="20dp"
android:layout_marginEnd="32dp"
android:hint="Nom du stade"
app:boxBackgroundMode="outline"
app:boxCornerRadiusTopEnd="16dp"
app:hintTextColor="#56E07B"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textView"
tools:ignore="DuplicateIds">
<com.google.android.material.textfield.TextInputEditText
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</com.google.android.material.textfield.TextInputLayout>
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/nbreplace"
style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="32dp"
android:layout_marginTop="40dp"
android:layout_marginEnd="32dp"
android:hint="Nombre de place"
app:boxBackgroundMode="outline"
app:boxCornerRadiusTopEnd="16dp"
app:hintTextColor="#56E07B"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/nomstade">
<com.google.android.material.textfield.TextInputEditText
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</com.google.android.material.textfield.TextInputLayout>
所以基本上当我运行这段代码时,我得到这个错误java.lang.ClassCastException:com.google.android.material.textfield.TextInputLayout不能转换为com.google.android.material.textfield.TextInputEditText
任何帮助都将不胜感激
1条答案
按热度按时间icnyk63a1#
这是因为它们是具有不同类型的不同项目。不能将Layout类型强制转换为EditText类型。如果你想要
TextInputEditText
,你应该给TextInputEditText
分配一个ID,然后找到它而不是布局父ID。那你就可以