如何修复 androidx.appcompat.widget.AppCompatButton 无法转换为 com.rey.material.widget.Button [英] How to fix androidx.appcompat.widget.AppCompatButton cannot be cast to com.rey.material.widget.Button
问题描述
我正在构建一个类似亚马逊的应用程序.在对 loginactivity 进行编码后,我无法从 mainactivity 访问它,因为它总是崩溃
I'm building a amazon like app. after coding the loginactivity I can't access it from mainactivity because it always crashes
这是我的 loginactivity.java
this is my loginactivity.java
public class loginActivity extends AppCompatActivity
{
private EditText InputPhoneNumber, InputPassword;
private Button LoginButtonPage;
private ProgressDialog loadingBar;
private String parentDbname = "Users";
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
LoginButtonPage = findViewById(R.id.page_login_btn);
InputPhoneNumber = findViewById(R.id.login_phone_number_input);
InputPassword = findViewById(R.id.login_password_input);
loadingBar = new ProgressDialog(this);
LoginButtonPage.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view)
{
LoginUser();
}
});
}
private void LoginUser()
{
String phone =InputPhoneNumber.getText().toString();
String password =InputPassword.getText().toString();
if (TextUtils.isEmpty(phone))
{
Toast.makeText(this,"Please Write Your Phone Number...", Toast.LENGTH_SHORT).show();
}
else if (TextUtils.isEmpty(password))
{
Toast.makeText(this,"Please Write Your Password...", Toast.LENGTH_SHORT).show();
}
else
{
loadingBar.setTitle("Login Account");
loadingBar.setMessage("Please Wait, while we are checking the credentials.");
loadingBar.setCanceledOnTouchOutside(false);
loadingBar.show();
AllowAccessToAccount(phone, password);
}
}
private void AllowAccessToAccount(final String phone, final String password)
{
final DatabaseReference RootRef;
RootRef = FirebaseDatabase.getInstance().getReference();
RootRef.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot)
{
if (dataSnapshot.child(parentDbname).child(phone).exists())
{
Users usersData = dataSnapshot.child(parentDbname).child(phone).getValue(Users.class);
assert usersData != null;
if (usersData.getPhone().equals(phone))
{
if (usersData.getPassword().equals(password))
{
Toast.makeText(loginActivity.this, "logged in successfully...", Toast.LENGTH_SHORT).show();
loadingBar.dismiss();
Intent intent = new Intent(loginActivity.this, HomeActivity.class);
Prevalent.currentOnlineUser = usersData;
startActivity(intent);
}
else
{
loadingBar.dismiss();
Toast.makeText(loginActivity.this, "Password is incorrect", Toast.LENGTH_SHORT).show();
}
}
}
else
{
Toast.makeText(loginActivity.this, "Account with this" + phone + "number do not exists", Toast.LENGTH_SHORT).show();
loadingBar.dismiss();
Toast.makeText(loginActivity.this, "you need to create a new account", Toast.LENGTH_SHORT).show();
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError)
{
}
});
}
}
这是我的登录活动布局
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
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/orange"
tools:context=".loginActivity">
<ImageView
android:id="@+id/login_applogo"
android:layout_width="300dp"
android:layout_height="100dp"
android:src="@drawable/applogo"
android:layout_centerHorizontal="true"
android:layout_marginTop="170dp"
/>
<EditText
android:id="@+id/login_phone_number_input"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/login_applogo"
android:background="@drawable/input_design"
android:padding="20dp"
android:layout_marginLeft="15dp"
android:layout_marginRight="15dp"
android:hint="Phone Number"
android:inputType="number"
android:textColor="@color/black"
android:textColorHint="@color/black"
android:textSize="17sp"
android:textStyle="bold"
/>
<EditText
android:id="@+id/login_password_input"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/login_phone_number_input"
android:background="@drawable/input_design"
android:padding="20dp"
android:layout_marginLeft="15dp"
android:layout_marginRight="15dp"
android:layout_marginTop="6dp"
android:hint="Password"
android:inputType="textPassword"
android:textColor="@color/black"
android:textColorHint="@color/black"
android:textSize="17sp"
android:textStyle="bold"
/>
<LinearLayout
android:id="@+id/linear_layout_1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_below="@id/login_password_input"
android:layout_marginTop="5dp"
>
<CheckBox
android:id="@+id/remember_me_checkBox"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
style="@style/Material.Drawable.CheckBox"
android:text="Remember Me"
android:textColor="@color/black"
app:cbd_strokeColor="@color/black"
android:gravity="center_vertical"
android:textSize="16sp"
android:textStyle="bold"
android:layout_marginLeft="17dp"
/>
<TextView
android:id="@+id/forget_password_link"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Forgot Password?"
android:textColor="@color/black"
android:textSize="17sp"
android:textStyle="bold"
android:layout_marginLeft="80dp"
/>
</LinearLayout>
<Button
android:id="@+id/page_login_btn"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/linear_layout_1"
android:layout_marginTop="5dp"
android:layout_marginLeft="15dp"
android:layout_marginRight="15dp"
android:background="@drawable/loginbutton"
android:padding="17dp"
android:textAllCaps="false"
android:textSize="18sp"
android:text="Login"
android:textColor="@color/black"
/>
<TextView
android:id="@+id/admin_panel_link"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="I'm an Admin"
android:layout_alignParentEnd="true"
android:layout_below="@+id/page_login_btn"
android:textColor="@color/black"
android:textSize="20sp"
android:textStyle="bold"
android:layout_marginLeft="80dp"
android:layout_marginEnd="23dp"
/>
<TextView
android:id="@+id/not_admin_panel_link"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="I'm an not Admin"
android:layout_alignParentStart="true"
android:layout_below="@+id/page_login_btn"
android:textColor="@color/black"
android:textSize="20sp"
android:textStyle="bold"
android:layout_marginLeft="80dp"
android:layout_marginStart="25dp"
android:visibility="invisible"
/>
</RelativeLayout>
然后我收到此错误
E/AndroidRuntime:致命异常:main进程:com.infinite.fastfood,PID:12305java.lang.RuntimeException: 无法启动活动 ComponentInfo{com.infinite.fastfood/com.infinite.fastfood.loginActivity}:java.lang.ClassCastException:androidx.appcompat.widget.AppCompatButton 不能转换为com.rey.material.widget.Button在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2646)在 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2707)在 android.app.ActivityThread.-wrap12(ActivityThread.java)在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:1460)在 android.os.Handler.dispatchMessage(Handler.java:102)在 android.os.Looper.loop(Looper.java:154)在 android.app.ActivityThread.main(ActivityThread.java:6077)在 java.lang.reflect.Method.invoke(Native Method)在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:866)在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:756)引起:java.lang.ClassCastException: androidx.appcompat.widget.AppCompatButton 不能转换为com.rey.material.widget.Button在 com.infinite.fastfood.loginActivity.onCreate(loginActivity.java:36)在 android.app.Activity.performCreate(Activity.java:6662)在 android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1118)在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2599)在 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2707)在 android.app.ActivityThread.-wrap12(ActivityThread.java)在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:1460)在 android.os.Handler.dispatchMessage(Handler.java:102)在 android.os.Looper.loop(Looper.java:154)在 android.app.ActivityThread.main(ActivityThread.java:6077)在 java.lang.reflect.Method.invoke(Native Method)在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:866)在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:756)
E/AndroidRuntime: FATAL EXCEPTION: main Process: com.infinite.fastfood, PID: 12305 java.lang.RuntimeException: Unable to start activity ComponentInfo{com.infinite.fastfood/com.infinite.fastfood.loginActivity}: java.lang.ClassCastException: androidx.appcompat.widget.AppCompatButton cannot be cast to com.rey.material.widget.Button at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2646) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2707) at android.app.ActivityThread.-wrap12(ActivityThread.java) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1460) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:154) at android.app.ActivityThread.main(ActivityThread.java:6077) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:866) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:756) Caused by: java.lang.ClassCastException: androidx.appcompat.widget.AppCompatButton cannot be cast to com.rey.material.widget.Button at com.infinite.fastfood.loginActivity.onCreate(loginActivity.java:36) at android.app.Activity.performCreate(Activity.java:6662) at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1118) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2599) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2707) at android.app.ActivityThread.-wrap12(ActivityThread.java) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1460) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:154) at android.app.ActivityThread.main(ActivityThread.java:6077) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:866) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:756)
推荐答案
尝试将 com.rey.material.widget.Button 导入更改为 androidx.appcompat.widget.AppCompatButton
Try changing com.rey.material.widget.Button import to androidx.appcompat.widget.AppCompatButton
这篇关于如何修复 androidx.appcompat.widget.AppCompatButton 无法转换为 com.rey.material.widget.Button的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!