Почему не работает кнопка Button в android studio?

Рейтинг: 2Ответов: 2Опубликовано: 26.02.2023

Такая возникла проблема, что при написании кода, сам код, каким-то образом, не видит имя заданное в onClick, тем самым и переход между кнопкой осуществляться не может.

Ошибок именно в написании имени быть не может, так как. пользуюсь ctr + c -> ctr + v. Сам код предоставлю внизу. В чем может быть проблема?

Это код для интерфейса:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/ggg"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@drawable/fff">


    <TextView
        android:id="@+id/text_bottom"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_centerHorizontal="true"
        android:layout_marginBottom="28dp"
        android:text="Авторизуйтесь в приложении"
        android:textSize="15sp"
        android:visibility="visible" />

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_above="@id/text_bottom"
        android:layout_marginStart="15dp"
        android:layout_marginTop="15dp"
        android:layout_marginEnd="15dp"
        android:layout_marginBottom="15dp"
        android:orientation="vertical"
        android:visibility="visible"
        android:weightSum="2">


        <EditText

            android:id="@+id/logField"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:ems="10"
            android:hint="Введите логин"
            android:inputType="textEmailAddress"
            android:text=""

            android:textColor="@color/black"
            android:textColorHint="@color/purple_500"
            android:textSize="20sp"

            android:visibility="visible" />


        <EditText
            android:id="@+id/pass"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:ems="10"
            android:hint="Введите пароль"
            android:inputType="textPassword"
            android:text=""

            android:textColor="@color/black"
            android:textColorHint="@color/purple_500"
            android:textSize="20sp"

            android:visibility="visible" />

        <Button
            android:id="@+id/buttonSignIn"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"

            android:layout_weight="1"
            android:onClick="OnClickvoity"
            android:text="Войти"
            android:visibility="visible" />

        <Button
            android:id="@+id/buttonReg"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:onClick="OnClickRegistra"
            android:text="Регистрация"
            android:visibility="visible" />
    </LinearLayout>

    <TextView
        android:id="@+id/wwwtext"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_marginBottom="360dp"
        android:text="Спасибо, что выбрали наше приложение!"
        android:visibility="visible"/>

    <TextView
        android:id="@+id/tvUserEmail"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_marginBottom="340dp"
        android:text="TextView"
        android:visibility="visible"/>

    <Button
        android:id="@+id/btstart"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_marginBottom="290dp"
        android:onClick="OnClickStart"
        android:text="Начать"
        android:visibility="visible"/>

    <Button
        android:id="@+id/onClickSignOut"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_marginBottom="250dp"
        android:onClick="onClickSignOut"
        android:text="Выйти"
        android:visibility="visible"/>

</RelativeLayout>

Это код уже в классе, для реализации работы:

   private EditText logField, pass;
   private FirebaseAuth mAuth;
   private Button btstart, buttonSignIn, buttonReg, btSignOut;
   private TextView tvUserEmail, text_bottom, wwwtext;


   @Override
   protected void onCreate(@Nullable Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
       setContentView(R.layout.autoriz);
       init();
   }
   @Override
   protected void onStart() {
       super.onStart();
       FirebaseUser cUser = mAuth.getCurrentUser();
       if(cUser != null)
       {
           String UserName = "Вы вошли как: " + cUser.getEmail();
           tvUserEmail.setText(UserName);
           showSignet();

           Toast.makeText(this, "Пользователь не зарегистрирован в приложении." + cUser.getEmail(), Toast.LENGTH_SHORT).show();
       }
       else {

           notSignet();
           Toast.makeText(this, "Пользователь зарегистрирован", Toast.LENGTH_SHORT).show();
       }

   }
   private  void init()
   {
       logField = findViewById(R.id.logField);
       pass = findViewById(R.id.pass);
       mAuth = FirebaseAuth.getInstance();
       btstart = findViewById(R.id.btstart);
       tvUserEmail = findViewById(R.id.tvUserEmail);
       buttonSignIn = findViewById(R.id.buttonSignIn);
       buttonReg = findViewById(R.id.buttonReg);
       text_bottom = findViewById(R.id.text_bottom);
       btSignOut = findViewById(R.id.onClickSignOut);
       wwwtext = findViewById(R.id.wwwtext);
   }
   public void OnClickvoity(View view)
   {
       if (!TextUtils.isEmpty(logField.getText().toString()) && !TextUtils.isEmpty(pass.getText().toString())) {
           mAuth.signInWithEmailAndPassword(logField.getText().toString(), pass.getText().toString()).addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
               @Override
               public void onComplete(@NonNull Task<AuthResult> task) {
                   if (task.isSuccessful()) {

                       showSignet();
                       Toast.makeText(getApplicationContext(), "Пользователь успешно вошел!", Toast.LENGTH_SHORT).show();
                   }
                   else
                   {
                       notSignet();
                       Toast.makeText(getApplicationContext(), "Произошла ошибка при входе в учетную запись", Toast.LENGTH_SHORT).show();
                   }
               }
           });
       }

   }
   public void OnClickRegistra(View view)
   {
       if (!TextUtils.isEmpty(logField.getText().toString()) && !TextUtils.isEmpty(pass.getText().toString())) {
           mAuth.createUserWithEmailAndPassword(logField.getText().toString(), pass.getText().toString()).addOnCompleteListener( this ,  new OnCompleteListener<AuthResult>() {
               @Override
               public void onComplete(@NonNull Task<AuthResult> task) {
                   if (task.isSuccessful()) {
                       showSignet();
                       Toast.makeText(getApplicationContext(), "Пользователь успешно зарегистрирован!", Toast.LENGTH_SHORT).show();
                   }
                   else
                   {
                       notSignet();
                       Toast.makeText(getApplicationContext(), "Произошла ошибка при регистрации", Toast.LENGTH_SHORT).show();
                   }
               }
           });

       }
       else {
           notSignet();
           Toast.makeText(getApplicationContext(), "Пожалуйста, введите пароль или электронную почту.", Toast.LENGTH_SHORT).show();

       }

   }
   public void onClickSignOut (View view)
   {
       FirebaseAuth.getInstance().signOut();

       notSignet();
   }
   private  void showSignet()
   {
       btstart.setVisibility(View.VISIBLE);
       tvUserEmail.setVisibility(View.VISIBLE);
       btSignOut.setVisibility(View.VISIBLE);
       logField.setVisibility(View.GONE);
       wwwtext.setVisibility(View.VISIBLE);
       pass.setVisibility(View.GONE);
       text_bottom.setVisibility(View.GONE);
       buttonSignIn.setVisibility(View.GONE);
       buttonReg.setVisibility(View.GONE);
   }
   private  void notSignet()
   {
       btstart.setVisibility(View.GONE);
       tvUserEmail.setVisibility(View.GONE);
       btSignOut.setVisibility(View.GONE);
       logField.setVisibility(View.VISIBLE);
       pass.setVisibility(View.VISIBLE);
       text_bottom.setVisibility(View.VISIBLE);
       wwwtext.setVisibility(View.GONE);
       buttonSignIn.setVisibility(View.VISIBLE);
       buttonReg.setVisibility(View.VISIBLE);
   }
   private void OnClickStart (View view)
   {
       Intent i = new Intent(logyi.this, add.class);
       startActivity(i);
   }

}

Для лучшего понимания прикреплю скриншот.

При реализации перехода между страницами и/или когда вовсе нужны различные манипуляции с кодом кнопки, то при написании слушателя нажатий именно тут не видит блин. Я отчаялся и не знаю что делать... тут описание

тут описание

Ответы

▲ 0

У вас в коде, при объявлении методов showSignet() и notSignet() есть лишний пробел после слова private.

▲ 0

Мне удобнее назначать обработку нажатия в коде, чем в xml

_button_hide = view.findViewById(R.id.button_hide);
_button_hide.setOnClickListener(v -> {
     // здесь код при нажатии
});