Android Fatal signal 11 (SIGSEGV) Руководство по игре в рулетку - PullRequest
0 голосов
/ 30 мая 2020

Я новичок и новичок в теме Android, и я следовал этому руководству This Roulette Я следил за ним и делал все точно так же, как и руководство ... Но этому руководству один год .. Прямо сейчас я использую последнюю версию Android Studio на основе JDK Java 8 ..

Это моя сборка Gradle

apply plugin: 'com.android.application'

android {
    compileSdkVersion 28


    defaultConfig {
        applicationId "com.example.sixgroup"
        minSdkVersion 26
        targetSdkVersion 28
        versionCode 1
        versionName "1.0"

        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }

}

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])

    implementation 'androidx.appcompat:appcompat:1.1.0'
    implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'androidx.test.ext:junit:1.1.1'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'

    implementation 'com.jakewharton:butterknife:10.2.1'
    annotationProcessor 'com.jakewharton:butterknife-compiler:10.2.1'
}

Мой код:

*************

import android.os.Bundle;
import androidx.appcompat.app.AppCompatActivity;
import android.view.View;
import android.view.animation.Animation;
import android.view.animation.DecelerateInterpolator;
import android.view.animation.RotateAnimation;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;

import java.util.Random;

import butterknife.BindView;
import butterknife.ButterKnife;
import butterknife.OnClick;

public class MainActivity extends AppCompatActivity {

    // sectors of our wheel (look at the image to see the sectors)
    private static final String[] sectors = { "32 red", "15 black",
            "19 red", "4 black", "21 red", "2 black", "25 red", "17 black", "34 red",
            "6 black", "27 red","13 black", "36 red", "11 black", "30 red", "8 black",
            "23 red", "10 black", "5 red", "24 black", "16 red", "33 black",
            "1 red", "20 black", "14 red", "31 black", "9 red", "22 black",
            "18 red", "29 black", "7 red", "28 black", "12 red", "35 black",
            "3 red", "26 black", "zero"
    };
    @BindView(R.id.spinBtn)
    Button spinBtn;
    @BindView(R.id.resultTv)
    TextView resultTv;
    @BindView(R.id.wheel)
    ImageView wheel;
    // We create a Random instance to make our wheel spin randomly
    private static final Random RANDOM = new Random();
    private int degree = 0;
    // We have 37 sectors on the wheel, we divide 360 by this value to have angle for each sector
    // we divide by 2 to have a half sector
    private static final float HALF_SECTOR = 360f / 37f / 2f;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        ButterKnife.bind(this);
    }

    @OnClick(R.id.spinBtn)
    public void spin(View v) {


        // we calculate random angle for rotation of our wheel
        degree = RANDOM.nextInt(360) + 720;
        int degreeOld = degree % 360;
        // rotation effect on the center of the wheel
        RotateAnimation rotateAnim = new RotateAnimation(degreeOld, degree,
                RotateAnimation.RELATIVE_TO_SELF, 0.5f, RotateAnimation.RELATIVE_TO_SELF, 0.5f);
        rotateAnim.setDuration(3600);
        rotateAnim.setFillAfter(true);
        rotateAnim.setInterpolator(new DecelerateInterpolator());
        rotateAnim.setAnimationListener(new Animation.AnimationListener() {
            @Override
            public void onAnimationStart(Animation animation) {
                // we empty the result text view when the animation start
                resultTv.setText("");
            }

            @Override
            public void onAnimationEnd(Animation animation) {
                // we display the correct sector pointed by the triangle at the end of the rotate animation
                resultTv.setText(getSector(360 - (degree % 360)));
            }

            @Override
            public void onAnimationRepeat(Animation animation) {

            }
        });

        // we start the animation
        wheel.startAnimation(rotateAnim);
    }

    private String getSector(int degrees) {
        int i = 0;
        String text = null;

        do {
            // start and end of each sector on the wheel
            float start = HALF_SECTOR * ((i * 2) + 1);
            float end = HALF_SECTOR * ((i * 2) + 3);

            if (degrees >= start && degrees < end) {
                // degrees is in [start;end[
                // so text is equals to sectors[i];
                text = sectors[i];
            }

            i++;
            // now we can test our Android Roulette Game :)
            // That's all !
            // In the second part, you will learn how to add some bets on the table to play to the Roulette Game :)
            // Subscribe and stay tuned !

        } while (text == null  &&  i < sectors.length);
            return text;
    }
}
**************

Все обновлено .. Так что я не уверен, почему получаю

A / lib c: критический сигнал 11 (SIGSEGV), код 1, адрес ошибки 0x68 в tid 12075 (xample.sixgroup )

Журнал:

2020-05-30 18:02:43.851 25578-25578/com.example.sixgroup I/zygote64:     at void com.example.sixgroup.MainActivity.onCreate(android.os.Bundle) (MainActivity.java:46)
2020-05-30 18:02:43.851 25578-25578/com.example.sixgroup I/zygote64:     at void android.app.Activity.performCreate(android.os.Bundle) (Activity.java:7183)
2020-05-30 18:02:43.851 25578-25578/com.example.sixgroup I/zygote64:     at void android.app.Instrumentation.callActivityOnCreate(android.app.Activity, android.os.Bundle) (Instrumentation.java:1220)
2020-05-30 18:02:43.851 25578-25578/com.example.sixgroup I/zygote64:     at android.app.Activity android.app.ActivityThread.performLaunchActivity(android.app.ActivityThread$ActivityClientRecord, android.content.Intent) (ActivityThread.java:2910)
2020-05-30 18:02:43.851 25578-25578/com.example.sixgroup I/zygote64:     at void android.app.ActivityThread.handleLaunchActivity(android.app.ActivityThread$ActivityClientRecord, android.content.Intent, java.lang.String) (ActivityThread.java:3032)
2020-05-30 18:02:43.851 25578-25578/com.example.sixgroup I/zygote64:     at void android.app.ActivityThread.-wrap11(android.app.ActivityThread, android.app.ActivityThread$ActivityClientRecord, android.content.Intent, java.lang.String) (ActivityThread.java:-1)
2020-05-30 18:02:43.851 25578-25578/com.example.sixgroup I/zygote64:     at void android.app.ActivityThread$H.handleMessage(android.os.Message) (ActivityThread.java:1696)
2020-05-30 18:02:43.851 25578-25578/com.example.sixgroup I/zygote64:     at void android.os.Handler.dispatchMessage(android.os.Message) (Handler.java:105)
2020-05-30 18:02:43.851 25578-25578/com.example.sixgroup I/zygote64:     at void android.os.Looper.loop() (Looper.java:164)
2020-05-30 18:02:43.851 25578-25578/com.example.sixgroup I/zygote64:     at void android.app.ActivityThread.main(java.lang.String[]) (ActivityThread.java:6944)
2020-05-30 18:02:43.851 25578-25578/com.example.sixgroup I/zygote64:     at java.lang.Object java.lang.reflect.Method.invoke(java.lang.Object, java.lang.Object[]) (Method.java:-2)
2020-05-30 18:02:43.851 25578-25578/com.example.sixgroup I/zygote64:     at void com.android.internal.os.Zygote$MethodAndArgsCaller.run() (Zygote.java:327)
2020-05-30 18:02:43.851 25578-25578/com.example.sixgroup I/zygote64:     at void com.android.internal.os.ZygoteInit.main(java.lang.String[]) (ZygoteInit.java:1374)
2020-05-30 18:02:44.048 25578-25578/com.example.sixgroup A/libc: Fatal signal 11 (SIGSEGV), code 1, fault addr 0x68 in tid 25578 (xample.sixgroup)

1 Ответ

0 голосов
/ 01 июня 2020

Ой, ребята, я не знаю и не уверен, в чем проблема на самом деле ... Но что я сделал, так это удалил зависимость (ButterKnife) и добавил свой собственный код внутри OnCreate .. Это заставило его работать ?? !!! Сначала в журнале было то же самое, но с указанием [-2], что невозможно для строковой области .. Это могло быть возможной проблемой.

Спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...