Вывод не отображался на моем устройстве (Android Studio)

#java #android #android-studio

#java #Android #android-studio

Вопрос:

Пока я запускаю эти коды, в моем logcat не отображается ошибка, но когда я нажимаю на текст «Новый участник? РЕГИСТРАЦИЯ», он не отображал страницу регистрации, вместо этого он возвращается к заставке на моем устройстве. Я думаю, что это, скорее всего, проблема с идентификатором, но я не уверен, что именно вызвало эту проблему.

Мой activity_login.xml:

 <?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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"
tools:context=".Login"
android:orientation="vertical"
android:background="#fff"
android:padding="20dp">

<ImageView
    android:id="@ id/image_logo"
    android:layout_width="101dp"
    android:layout_height="69dp"
    android:transitionName="logo_logo"
    android:src="@drawable/logo_new"/>

<TextView
    android:id="@ id/logo_name"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:fontFamily="@font/bungee"
    android:text="Hi, Welcome Back!"
    android:transitionName="logo_text"
    android:textColor="#ff8e88"
    android:textSize="40sp"/>

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:transitionName="logo_desc"
    android:text="Sign in to continue"
    android:textSize="18sp"/>

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_margin="5dp"
    android:layout_marginTop="10dp"
    android:layout_marginBottom="20dp"
    android:orientation="vertical">

    <com.google.android.material.textfield.TextInputLayout
        style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@ id/username"
        android:transitionName="user_tran"
        android:hint="Username">

        <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
        style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@ id/password"
        android:hint="Password"
        android:transitionName="password_tran"
        app:passwordToggleEnabled="true">

        <com.google.android.material.textfield.TextInputEditText
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:inputType="textPassword" />

    </com.google.android.material.textfield.TextInputLayout>

    <CheckBox
        style="@style/Widget.AppCompat.CompoundButton.CheckBox"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Remember Me" />

    <Button
        android:layout_width="160dp"
        android:layout_height="wrap_content"
        android:layout_gravity="right"
        android:layout_margin="3dp"
        android:background="#00000000"
        android:elevation="0dp"
        android:text="Forget Password" />

    <Button
        android:id="@ id/btnLogin"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="5dp"
        android:layout_marginBottom="5dp"
        android:background="#ff8e88"
        android:text="Log In"
        android:transitionName="button_tran"
        android:textColor="#fff" />

    <Button
        android:id="@ id/register_screen"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="right"
        android:layout_margin="5dp"
        android:background="#00000000"
        android:elevation="0dp"
        android:fontFamily="@font/antic"
        android:text="New Member? REGISTER"
        android:textColor="#000"
        android:transitionName="login_register_tran"/>

  </LinearLayout>

</LinearLayout>
 

Мой Login.java:

   public class Login extends AppCompatActivity {

  Button callRegister, login_btn;
  ImageView image;
  TextView logoText, sloganText;
  TextInputLayout username,password;

  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.
    FLAG_FULLSCREEN);
    setContentView(R.layout.activity_login);

    callRegister = findViewById(R.id.register_screen);
    image = findViewById(R.id.image_logo);
    logoText = findViewById(R.id.logo_name);
    sloganText = findViewById(R.id.slogan_name);
    username = findViewById(R.id.username);
    password = findViewById(R.id.password);
    login_btn = findViewById(R.id.login_btn);

    callRegister.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent intent = new Intent(Login.this,Register.class);

            Pair[] pairs = new Pair[7];

            pairs[0] = new Pair<View,String>(image,"logo_logo");
            pairs[1] = new Pair<View,String>(logoText,"logo_text");
            pairs[2] = new Pair<View,String>(sloganText,"logo_desc");
            pairs[3] = new Pair<View,String>(username,"user_tran");
            pairs[4] = new Pair<View,String>(password,"password_tran");
            pairs[5] = new Pair<View,String>(login_btn,"button_tran");
            pairs[6] = new Pair<View,String>(callRegister,"login_register_tran");

            if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.LOLLIPOP) {
                ActivityOptions options = 
            ActivityOptions.makeSceneTransitionAnimation(Login.this,pairs);
                startActivity(intent, options.toBundle());
            }
        }
    });

  }
}
 

Мой activity_register.xml:

 <?xml version="1.0" encoding="utf-8"?>
 <LinearLayout 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"
 tools:context=".Register"
 android:orientation="vertical"
 android:background="#fff"
 android:padding="10dp">

<ImageView
    android:layout_width="101dp"
    android:layout_height="69dp"
    android:transitionName="logo_logo"
    android:src="@drawable/logo_new"/>

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginTop="-10dp"
    android:fontFamily="@font/bungee"
    android:text="Welcome"
    android:transitionName="logo_text"
    android:textColor="#ff8e88"
    android:textSize="30sp" />

<TextView
    android:id="@ id/slogan_name"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Register to start"
    android:textSize="16sp"/>

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical"
    android:layout_marginTop="10dp">

    <com.google.android.material.textfield.TextInputLayout
        android:id="@ id/username"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="Username"
        app:counterEnabled="true"
        app:counterMaxLength="15"
        style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox">

        <com.google.android.material.textfield.TextInputEditText
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:inputType="text" />

    </com.google.android.material.textfield.TextInputLayout>

    <com.google.android.material.textfield.TextInputLayout
    android:id="@ id/email"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:hint="Email"
    style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox">

        <com.google.android.material.textfield.TextInputEditText
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:inputType="textEmailAddress" />

    </com.google.android.material.textfield.TextInputLayout>

    <com.google.android.material.textfield.TextInputLayout
        android:id="@ id/phoneNo"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="Phone Number"
        style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox">

        <com.google.android.material.textfield.TextInputEditText
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:inputType="number"/>

    </com.google.android.material.textfield.TextInputLayout>

    <com.google.android.material.textfield.TextInputLayout
        android:id="@ id/password"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="Password"
        app:passwordToggleEnabled="true"
        style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox">

        <com.google.android.material.textfield.TextInputEditText
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:inputType="textPassword" />

    </com.google.android.material.textfield.TextInputLayout>

</LinearLayout>

<TextView
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text="User Type"
    android:layout_marginLeft="5dp"
    android:textSize="17dp"/>

<CheckBox
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text="User" />

<CheckBox
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text="Guardian"/>

<Button
    android:id="@ id/login_btn"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginTop="50dp"
    android:background="#ff8e88"
    android:text="Register"
    android:textColor="#fff" />

<Button
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text="Already have an account? LOGIN"
    android:background="#00000000" />

</LinearLayout>
 

Мой Register.java:

 public class Register extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_register);
  }
}


  
 

Комментарии:

1. не могли бы вы попробовать удалить `ActivityOptions.makeSceneTransitionAnimation(Login.this, pairs);` и посмотреть, работает ли это? Также убедитесь, что ваше устройство или виртуальная машина выше, чем Lollipop 21

Ответ №1:

В вашем коде были некоторые проблемы. Ваши имена в идентификаторе из xml в вашу java были непоследовательными. например:

 <TextView
android:id="@ id/logo_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:fontFamily="@font/bungee"
android:text="Hi, Welcome Back!"
android:transitionName="logo_text"
android:textColor="#ff8e88"
android:textSize="40sp"/>
 

обратите внимание на ваше имя в идентификаторе android:id="@ id/logo_name" , затем в вашем java-файле оно было правильным, но вы определили slogan его как идентификатор, но у вас нет имени xml slogan , поэтому я создал новый проект и все скопировал. Поэтому я использую немного другое соглашение об именовании между классами, но оно по-прежнему показывает различия.

MainActivity.java ака Login.java

 public class MainActivity extends AppCompatActivity {

Button callRegister, login_btn;
ImageView image;
TextView logoText, sloganText;
TextInputLayout username,password;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.
            FLAG_FULLSCREEN);
    setContentView(R.layout.activity_main);

    callRegister = findViewById(R.id.register_screen);
    image = findViewById(R.id.image_logo);
    logoText = findViewById(R.id.logo_name);
    sloganText = findViewById(R.id.logo_name);
    username = findViewById(R.id.username);
    password = findViewById(R.id.password);
    login_btn = findViewById(R.id.btnLogin);

    callRegister.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent intent = new Intent(MainActivity.this, RegisterActivity.class);

            Pair[] pairs = new Pair[7];

            pairs[0] = new Pair<View,String>(image,"logo_logo");
            pairs[1] = new Pair<View,String>(logoText,"logo_text");
            pairs[2] = new Pair<View,String>(sloganText,"logo_desc");
            pairs[3] = new Pair<View,String>(username,"user_tran");
            pairs[4] = new Pair<View,String>(password,"password_tran");
            pairs[5] = new Pair<View,String>(login_btn,"button_tran");
            pairs[6] = new Pair<View,String>(callRegister,"login_register_tran");

            if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.LOLLIPOP) {
                ActivityOptions options =
                        ActivityOptions.makeSceneTransitionAnimation(MainActivity.this,pairs);
                startActivity(intent, options.toBundle());
            }
        }
    });

}
 

}

там, где у вас был идентификатор slogan представления … для показа я изменил его на logo , где когда-либо ваш текст лозунга — назовите его идентификатором, а затем ссылайтесь на него в файле java.

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

Убедитесь, что у вас все правильно названо и правильно указано. также сравните исправление с вашим, а затем попробуйте и посмотрите, работает ли оно. Помните, где у вас есть Login Я использую MainActivity