Кнопка закрытия приложения вместо переключения активности - PullRequest
0 голосов
/ 05 мая 2020

Пытаюсь сделать игру Ti c -Ta c -Toe при помощи студии android. Когда я пытаюсь переключиться с MainActivity на другое действие (игру), вместо переключения кнопка закрывает приложение. Я добавил несколько кнопок в Game activity, но не использовал их, и android studio не показывает никаких ошибок, так что проблема в Game Activity или MainActivity? И как решить эту проблему. Основная активность:

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Button play = (Button)findViewById(R.id.play);
        Button quit = (Button)findViewById(R.id.quit);
        play.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                openGame();
            }
        });
        quit.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                quitGame();
            }
        });
    }
    void openGame() {
        Intent intent = new Intent(MainActivity.this, Game.class);
        startActivity(intent);
    }
    void quitGame() {
        finish();
        System.exit(0);
    }
}

Игровая активность:

public class Game extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_game);
        final ConstraintLayout constraintLayout = (ConstraintLayout)findViewById(R.id.bg);
        constraintLayout.setOnTouchListener(new View.OnTouchListener() {
            @Override
            public boolean onTouch(View v, MotionEvent event) {
                String color1[] = {"#fb5959", "#fe7738", "#f3980b", "#DBD100", "#A8D700", "#87E50C"};
                String color2[] = {"#54F370", "#00FFBC", "#00FFFF", "#00FFE9", "#00C8FF", "#0085FF"};
                Random random = new Random();
                GradientDrawable gradientDrawable = new GradientDrawable(GradientDrawable.Orientation.BL_TR,
                    new int[]{Color.parseColor(color1[random.nextInt(6)]),Color.parseColor(color2[random.nextInt(6)])});
                constraintLayout.setBackgroundDrawable(gradientDrawable);
                return false;
            }
        });
        Button one = (Button) findViewById(R.id.one);
        Button two = (Button) findViewById(R.id.two);
        Button three = (Button) findViewById(R.id.three);
        Button four = (Button) findViewById(R.id.four);
        Button five = (Button) findViewById(R.id.five);
        Button six = (Button) findViewById(R.id.six);
        Button seven = (Button) findViewById(R.id.seven);
        Button eight = (Button) findViewById(R.id.eight);
        Button nine = (Button) findViewById(R.id.nine);
    }
}

Трассировка стека:

05/05 13:14:41: Launching 'app' on OnePlus ONE A2003.
$ adb shell am start -n "com.example.tictactoe/com.example.tictactoe.MainActivity" -a android.intent.action.MAIN -c android.intent.category.LAUNCHER
Connected to process 21369 on device 'oneplus-one_a2003-3222ee10'.
Capturing and displaying logcat messages from application. This behavior can be disabled in the "Logcat output" section of the "Debugger" settings page.
I/Choreographer: Skipped 107 frames!  The application may be doing too much work on its main thread.
E/AbstractTracker: Can't create handler inside thread that has not called Looper.prepare()
D/AppTracker: App Event: start
E/AbstractTracker: Can't create handler inside thread that has not called Looper.prepare()
D/AppTracker: App Event: stop
D/AndroidRuntime: Shutting down VM
E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.example.tictactoe, PID: 21369
    java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.tictactoe/com.example.tictactoe.Game}: android.view.InflateException: Binary XML file line #11: Binary XML file line #11: Error inflating class Button
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2452)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2535)
        at android.app.ActivityThread.access$900(ActivityThread.java:155)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1380)
        at android.os.Handler.dispatchMessage(Handler.java:102)
        at android.os.Looper.loop(Looper.java:152)
        at android.app.ActivityThread.main(ActivityThread.java:5497)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
     Caused by: android.view.InflateException: Binary XML file line #11: Binary XML file line #11: Error inflating class Button
        at android.view.LayoutInflater.inflate(LayoutInflater.java:539)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:423)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:374)
        at androidx.appcompat.app.AppCompatDelegateImpl.setContentView(AppCompatDelegateImpl.java:555)
        at androidx.appcompat.app.AppCompatActivity.setContentView(AppCompatActivity.java:161)
        at com.example.tictactoe.Game.onCreate(Game.java:20)
        at android.app.Activity.performCreate(Activity.java:6289)
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1118)
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2405)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2535) 
        at android.app.ActivityThread.access$900(ActivityThread.java:155) 
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1380) 
        at android.os.Handler.dispatchMessage(Handler.java:102) 
        at android.os.Looper.loop(Looper.java:152) 
        at android.app.ActivityThread.main(ActivityThread.java:5497) 
        at java.lang.reflect.Method.invoke(Native Method) 
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 
     Caused by: android.view.InflateException: Binary XML file line #11: Error inflating class Button
        at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:782)
        at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:704)
        at android.view.LayoutInflater.rInflate(LayoutInflater.java:835)
        at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:798)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:515)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:423) 
        at android.view.LayoutInflater.inflate(LayoutInflater.java:374) 
        at androidx.appcompat.app.AppCompatDelegateImpl.setContentView(AppCompatDelegateImpl.java:555) 
        at androidx.appcompat.app.AppCompatActivity.setContentView(AppCompatActivity.java:161) 
        at com.example.tictactoe.Game.onCreate(Game.java:20) 
        at android.app.Activity.performCreate(Activity.java:6289) 
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1118) 
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2405) 
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2535) 
        at android.app.ActivityThread.access$900(ActivityThread.java:155) 
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1380) 
        at android.os.Handler.dispatchMessage(Handler.java:102) 
        at android.os.Looper.loop(Looper.java:152) 
        at android.app.ActivityThread.main(ActivityThread.java:5497) 
        at java.lang.reflect.Method.invoke(Native Method) 
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 
     Caused by: java.lang.UnsupportedOperationException: Failed to resolve attribute at index 13: TypedValue{t=0x2/d=0x10101e6 a=-1}
        at android.content.res.TypedArray.getDrawable(TypedArray.java:867)
        at android.view.View.<init>(View.java:3964)
        at android.widget.TextView.<init>(TextView.java:680)
        at android.widget.Button.<init>(Button.java:109)
        at android.widget.Button.<init>(Button.java:105)
        at androidx.appcompat.widget.AppCompatButton.<init>(AppCompatButton.java:72)
        at androidx.appcompat.widget.AppCompatButton.<init>(AppCompatButton.java:68)
        at androidx.appcompat.app.AppCompatViewInflater.createButton(AppCompatViewInflater.java:192)
        at androidx.appcompat.app.AppCompatViewInflater.createView(AppCompatViewInflater.java:111)
        at androidx.appcompat.app.AppCompatDelegateImpl.createView(AppCompatDelegateImpl.java:1407)
        at androidx.appcompat.app.AppCompatDelegateImpl.onCreateView(AppCompatDelegateImpl.java:1457)
        at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:746)
        at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:704) 
        at android.view.LayoutInflater.rInflate(LayoutInflater.java:835) 
        at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:798) 
        at android.view.LayoutInflater.inflate(LayoutInflater.java:515) 
        at android.view.LayoutInflater.inflate(LayoutInflater.java:423) 
        at android.view.LayoutInflater.inflate(LayoutInflater.java:374) 
        at androidx.appcompat.app.AppCompatDelegateImpl.setContentView(AppCompatDelegateImpl.java:555) 
        at androidx.appcompat.app.AppCompatActivity.setContentView(AppCompatActivity.java:161) 
        at com.example.tictactoe.Game.onCreate(Game.java:20) 
        at android.app.Activity.performCreate(Activity.java:6289) 
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1118) 
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2405) 
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2535) 
        at android.app.ActivityThread.access$900(ActivityThread.java:155) 
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1380) 
        at android.os.Handler.dispatchMessage(Handler.java:102) 
        at android.os.Looper.loop(Looper.java:152) 
        at android.app.ActivityThread.main(ActivityThread.java:5497) 
        at java.lang.reflect.Method.invoke(Native Method) 
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 
D/AppTracker: App Event: crash
I/Process: Sending signal. PID: 21369 SIG: 9

Игровая активность Xml Код:

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout 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:id="@+id/bg"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#0D95DF"
    tools:context=".Game">

    <Button
        android:id="@+id/one"
        android:layout_width="91dp"
        android:layout_height="90dp"
        android:background="?android:attr/selectable"
        android:text="\?"
        android:textSize="30sp"
        app:layout_constraintBottom_toTopOf="@+id/guideline2"
        app:layout_constraintEnd_toStartOf="@+id/guideline4"
        app:layout_constraintHorizontal_bias="0.015"
        app:layout_constraintStart_toStartOf="@+id/guideline3"
        app:layout_constraintTop_toTopOf="@+id/guideline1"
        app:layout_constraintVertical_bias="0.029" />

    <Button
        android:id="@+id/two"
        android:layout_width="90dp"
        android:layout_height="90dp"
        android:background="?android:attr/selectable"
        android:text="\?"
        android:textSize="30sp"
        app:layout_constraintBottom_toTopOf="@+id/guideline2"
        app:layout_constraintEnd_toStartOf="@+id/guideline4"
        app:layout_constraintStart_toStartOf="@+id/guideline3"
        app:layout_constraintTop_toTopOf="@+id/guideline1"
        app:layout_constraintVertical_bias="0.034" />

    <Button
        android:id="@+id/three"
        android:layout_width="91dp"
        android:layout_height="90dp"
        android:background="?android:attr/selectable"
        android:text="\?"
        android:textSize="30sp"
        app:layout_constraintBottom_toTopOf="@+id/guideline2"
        app:layout_constraintEnd_toStartOf="@+id/guideline4"
        app:layout_constraintHorizontal_bias="0.984"
        app:layout_constraintStart_toStartOf="@+id/guideline3"
        app:layout_constraintTop_toTopOf="@+id/guideline1"
        app:layout_constraintVertical_bias="0.034" />

    <Button
        android:id="@+id/four"
        android:layout_width="91dp"
        android:layout_height="92dp"
        android:background="?android:attr/selectable"
        android:text="\?"
        android:textSize="30sp"
        app:layout_constraintBottom_toTopOf="@+id/guideline2"
        app:layout_constraintEnd_toStartOf="@+id/guideline4"
        app:layout_constraintHorizontal_bias="0.015"
        app:layout_constraintStart_toStartOf="@+id/guideline3"
        app:layout_constraintTop_toTopOf="@+id/guideline1"
        app:layout_constraintVertical_bias="0.497" />

    <Button
        android:id="@+id/five"
        android:layout_width="91dp"
        android:layout_height="92dp"
        android:background="?android:attr/selectable"
        android:text="\?"
        android:textSize="30sp"
        app:layout_constraintBottom_toTopOf="@+id/guideline2"
        app:layout_constraintEnd_toStartOf="@+id/guideline4"
        app:layout_constraintHorizontal_bias="0.497"
        app:layout_constraintStart_toStartOf="@+id/guideline3"
        app:layout_constraintTop_toTopOf="@+id/guideline1"
        app:layout_constraintVertical_bias="0.497" />

    <Button
        android:id="@+id/six"
        android:layout_width="91dp"
        android:layout_height="92dp"
        android:background="?android:attr/selectable"
        android:text="\?"
        android:textSize="30sp"
        app:layout_constraintBottom_toTopOf="@+id/guideline2"
        app:layout_constraintEnd_toStartOf="@+id/guideline4"
        app:layout_constraintHorizontal_bias="0.984"
        app:layout_constraintStart_toStartOf="@+id/guideline3"
        app:layout_constraintTop_toTopOf="@+id/guideline1"
        app:layout_constraintVertical_bias="0.497" />

    <Button
        android:id="@+id/seven"
        android:layout_width="91dp"
        android:layout_height="92dp"
        android:background="?android:attr/selectable"
        android:text="\?"
        android:textSize="30sp"
        app:layout_constraintBottom_toTopOf="@+id/guideline2"
        app:layout_constraintEnd_toStartOf="@+id/guideline4"
        app:layout_constraintHorizontal_bias="0.015"
        app:layout_constraintStart_toStartOf="@+id/guideline3"
        app:layout_constraintTop_toTopOf="@+id/guideline1"
        app:layout_constraintVertical_bias="0.975" />

    <Button
        android:id="@+id/eight"
        android:layout_width="91dp"
        android:layout_height="92dp"
        android:background="?android:attr/selectable"
        android:text="\?"
        android:textSize="30sp"
        app:layout_constraintBottom_toTopOf="@+id/guideline2"
        app:layout_constraintEnd_toStartOf="@+id/guideline4"
        app:layout_constraintHorizontal_bias="0.502"
        app:layout_constraintStart_toStartOf="@+id/guideline3"
        app:layout_constraintTop_toTopOf="@+id/guideline1"
        app:layout_constraintVertical_bias="0.975" />

    <Button
        android:id="@+id/nine"
        android:layout_width="91dp"
        android:layout_height="92dp"
        android:background="?android:attr/selectable"
        android:text="\?"
        android:textSize="30sp"
        app:layout_constraintBottom_toTopOf="@+id/guideline2"
        app:layout_constraintEnd_toStartOf="@+id/guideline4"
        app:layout_constraintHorizontal_bias="0.984"
        app:layout_constraintStart_toStartOf="@+id/guideline3"
        app:layout_constraintTop_toTopOf="@+id/guideline1"
        app:layout_constraintVertical_bias="0.975" />

    <TextView
        android:id="@+id/player1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Player 1 (X) :"
        android:textColor="#000000"
        android:textSize="20sp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.177"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintVertical_bias="0.098" />

    <EditText
        android:id="@+id/name1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:ems="10"
        android:hint="Name"
        android:inputType="textPersonName"
        android:textAlignment="center"
        android:textSize="16sp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.513"
        app:layout_constraintStart_toEndOf="@+id/player1"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintVertical_bias="0.088" />

    <TextView
        android:id="@+id/player2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Player 2 (O) :"
        android:textColor="#000000"
        android:textSize="20sp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.175"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintVertical_bias="0.177" />

    <EditText
        android:id="@+id/name2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:ems="10"
        android:hint="Name"
        android:inputType="textPersonName"
        android:textAlignment="center"
        android:textSize="16sp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.513"
        app:layout_constraintStart_toEndOf="@+id/player1"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintVertical_bias="0.17" />

    <androidx.constraintlayout.widget.Guideline
        android:id="@+id/guideline1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        app:layout_constraintGuide_begin="20dp"
        app:layout_constraintGuide_percent="0.3" />

    <androidx.constraintlayout.widget.Guideline
        android:id="@+id/guideline2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        app:layout_constraintGuide_begin="462dp"
        app:layout_constraintGuide_percent="0.7" />

    <androidx.constraintlayout.widget.Guideline
        android:id="@+id/guideline3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        app:layout_constraintGuide_begin="20dp"
        app:layout_constraintGuide_percent="0.15" />
    <androidx.constraintlayout.widget.Guideline
        android:id="@+id/guideline4"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        app:layout_constraintGuide_begin="358dp"
        app:layout_constraintGuide_percent="0.85" />

    <View
        android:id="@+id/vertical1"
        android:layout_width="4dp"
        android:layout_height="282dp"
        android:background="?android:attr/listDivider"
        android:visibility="visible"
        app:layout_constraintBottom_toTopOf="@+id/guideline2"
        app:layout_constraintEnd_toStartOf="@+id/guideline4"
        app:layout_constraintHorizontal_bias="0.333"
        app:layout_constraintStart_toStartOf="@+id/guideline3"
        app:layout_constraintTop_toTopOf="@+id/guideline1"
        app:layout_constraintVertical_bias="0.5"
        tools:visibility="visible" />

    <View
        android:id="@+id/vertical2"
        android:layout_width="4dp"
        android:layout_height="282dp"
        android:background="?android:attr/listDivider"
        android:visibility="visible"
        app:layout_constraintBottom_toTopOf="@+id/guideline2"
        app:layout_constraintEnd_toStartOf="@+id/guideline4"
        app:layout_constraintHorizontal_bias="0.666"
        app:layout_constraintStart_toStartOf="@+id/guideline3"
        app:layout_constraintTop_toTopOf="@+id/guideline1"
        app:layout_constraintVertical_bias="0.5"
        tools:visibility="visible" />

    <View
        android:id="@+id/horizontal1"
        android:layout_width="282dp"
        android:layout_height="4dp"
        android:background="?android:attr/listDivider"
        app:layout_constraintBottom_toTopOf="@+id/guideline2"
        app:layout_constraintEnd_toStartOf="@+id/guideline4"
        app:layout_constraintStart_toStartOf="@+id/guideline3"
        app:layout_constraintTop_toTopOf="@+id/guideline1"
        app:layout_constraintVertical_bias="0.333" />

    <View
        android:id="@+id/horizontal2"
        android:layout_width="282dp"
        android:layout_height="4dp"
        android:background="?android:attr/listDivider"
        app:layout_constraintBottom_toTopOf="@+id/guideline2"
        app:layout_constraintEnd_toStartOf="@+id/guideline4"
        app:layout_constraintHorizontal_bias="0.5"
        app:layout_constraintStart_toStartOf="@+id/guideline3"
        app:layout_constraintTop_toTopOf="@+id/guideline1"
        app:layout_constraintVertical_bias="0.666" />

</androidx.constraintlayout.widget.ConstraintLayout>

1 Ответ

0 голосов
/ 05 мая 2020

у вас есть исключение инфляции, Android не может надуть Button, потому что он не распознает? Attr / ... У меня была аналогичная проблема некоторое время назад. Попробуйте удалить эту строку из xml.

android:background="?android:attr/selectable"

, если проблема не устранена, удалите все строки с помощью.

android:.......="?attr/...."
...