Android Studio, проблема с выводом экрана на экран

#java #android #android-studio

#java #Android #android-studio

Вопрос:

по сути, я пытаюсь сделать так, чтобы LoginScreen переходил на экран категории.

 package Screens;

import androidx.appcompat.app.AppCompatActivity;

import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.provider.Settings;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;


import com.hr111.User.R;

import Utils.DisplayUtils;
import Utils.PlanUtils;
import Utils.SharedPreferencesUtils;

public class CategoryScreen extends AppCompatActivity {

    Button btnExit;
    Button btnChemistry;
    Button btnBiology;
    Button btnPhysics;
    TextView textPlayerName;

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

        btnExit = findViewById(R.id.btnExit);
        textPlayerName = findViewById(R.id.textViewName);
        btnBiology = findViewById(R.id.btnBiology);
        btnPhysics = findViewById(R.id.btnPhysics);
        btnChemistry = findViewById(R.id.btnChemistry);

        String username = SharedPreferencesUtils.getStringPreference(CategoryScreen.this, "username");

        textPlayerName.append(username);

        btnBiology.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                goToQuestions(btnBiology.getText().toString());
            }
        });

        btnPhysics.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                goToQuestions(btnPhysics.getText().toString());
            }
        });

        btnChemistry.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                goToQuestions(btnChemistry.getText().toString());
            }
        });

        btnExit.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                DisplayUtils.DisplayScript(CategoryScreen.this, "Exit", "Cikmak Istiyor Musunuz?",
                        "Hayır", "Evet", null, null);
            }
        });
    }


    void goToQuestions(String CategoryName){ 

        SharedPreferencesUtils.settingStringPreference(CategoryScreen.this, "category", CategoryName);
        SharedPreferencesUtils.settingIntegerPreference(CategoryScreen.this, "questionCount", 1);
        SharedPreferencesUtils.settingIntegerPreference(CategoryScreen.this, "score", 0);

        PlanUtils.GoToActivity(CategoryScreen.this, GameScreen.class);
    }
}

package Screens;

import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;

import com.hr111.User.MainActivity;
import com.hr111.User.R;

import Utils.DisplayUtils;
import Utils.ExcerciseClass;
import Utils.PlanUtils;
import Utils.SharedPreferencesUtils;

public class LoginScreen extends AppCompatActivity implements View.OnClickListener {
    Button btnNext;
    TextView username;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_login_screen);
        btnNext = findViewById(R.id.buttonLogin);
        username = findViewById(R.id.plaintextName);

        btnNext.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                String name = username.getText().toString().trim();

                if(nameCheck(name))
                {
                    SharedPreferencesUtils.settingStringPreference(LoginScreen.this, "playername", name);

                    PlanUtils.GoToActivity(LoginScreen.this, CategoryScreen.class);
                }
                else
                {
                    DisplayUtils.DisplayScript(LoginScreen.this, "ERROR!", "Gecerli bir oyuncu adi seciniz!", null, null, null, null);
                }


            }
        });

    }


    boolean nameCheck(String name){

        if(name == null) return false;
        if(name.length() == 0) return false;

        return true;
    }

    @Override
    public void onClick(View v) {

    }
}
 

Оба экрана находятся в разных классах.
Но он просто выходит из строя до того, как LoginScreen сможет перейти к экрану категории. Есть какие-либо подсказки, почему это не работает? Я пытался разобраться, и я использовал разные варианты кодов, но все это ни к чему меня не привело. Я также пробовал другой проект, но это также ни к чему меня не привело. Заранее спасибо

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

1. crashes before LoginScreen can reach to Category Screen … пожалуйста, добавьте отчет о сбое

2. Где именно они расположены?

3. на вкладке logcat Android Studio на нижней панели инструментов запустите приложение при подключении к Android Studio, смоделируйте сбой и получите отчет из logcat