标题翻译
Android Fatal signal 11 (SIGSEGV) Roulette Tutorial
问题
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 {
private static final String[] sectors = { ... }; // Array of sectors
@BindView(R.id.spinBtn)
Button spinBtn;
@BindView(R.id.resultTv)
TextView resultTv;
@BindView(R.id.wheel)
ImageView wheel;
private static final Random RANDOM = new Random();
private int degree = 0;
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) {
degree = RANDOM.nextInt(360) + 720;
int degreeOld = degree % 360;
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) {
resultTv.setText("");
}
@Override
public void onAnimationEnd(Animation animation) {
resultTv.setText(getSector(360 - (degree % 360)));
}
@Override
public void onAnimationRepeat(Animation animation) {
}
});
wheel.startAnimation(rotateAnim);
}
private String getSector(int degrees) {
int i = 0;
String text = null;
do {
float start = HALF_SECTOR * ((i * 2) + 1);
float end = HALF_SECTOR * ((i * 2) + 3);
if (degrees >= start && degrees < end) {
text = sectors[i];
}
i++;
} while (text == null && i < sectors.length);
return text;
}
}
The provided code seems to be an Android application code for a roulette game. It's using ButterKnife for view binding and performing a spinning animation on a wheel-like object. The issue you're facing ("Fatal signal 11") might be due to various reasons, such as memory-related problems or invalid memory access.
Please note that I can only provide the translated code and can't provide debugging assistance without more context. If you encounter issues, consider checking the related logcat messages, reviewing your code for potential errors, and consulting Android development resources for troubleshooting.
英文翻译
I'm new and beginner actually to Android thing, and I followed this tutorial This Roulette I followed it and done everything exact same as the tutorial... But that tutorial is one year old.. Right now am using Android Studio latest version based on JDK Java 8..
This is my gradle build
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'
}
My Code:
*************
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;
}
}
**************
Everything update.. So am not sure why am getting
> A/libc: Fatal signal 11 (SIGSEGV), code 1, fault addr 0x68 in tid 12075 (xample.sixgroup)
The log:
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
好的,以下是翻译好的部分:
Ohkay,伙计们,我不知道,也不确定问题实际上是什么... 但是我所做的就是移除了依赖(ButterKnife),并在OnCreate中添加了自己的代码... 这样做就可以工作了?!!!一开始在日志中它是一样的,但是给了一个[-2],这对于一个字符串区域来说是不可能的... 这可能是问题所在。
谢谢
英文翻译
Ohkay guys, I don't know and am not sure what was the problem actually... But what I have done is removing the dependence(ButterKnife) and adding my own code inside OnCreate.. This made it work??!!! First in the log it was same but giving [-2] which is impossible for a String Area.. This could the possible problem.
Thank you
专注分享java语言的经验与见解,让所有开发者获益!
评论