這個功能崩潰我的應用程序,我不知道爲什麼。功能改變背景顏色崩潰的應用程序
public void whileLoopForChange(){
while (gameRunning = true){
View someView = findViewById(R.id.screen);
final View root = someView.getRootView();
Random rand = new Random();
final int value = rand.nextInt(15);
if(lvl<10){
new Timer().schedule(new TimerTask() {
@Override
public void run() {
if(value == 1){
root.setBackgroundColor(ContextCompat.getColor(MainActivity.this, R.color.Red));
currentColor = "red";
}else if(value == 2){
root.setBackgroundColor(ContextCompat.getColor(MainActivity.this, R.color.Pink));
currentColor = "pink";
}else if(value == 3){
root.setBackgroundColor(ContextCompat.getColor(MainActivity.this, R.color.Orange));
currentColor = "orange";
}else if(value == 4){
root.setBackgroundColor(ContextCompat.getColor(MainActivity.this, R.color.Blue));
currentColor = "blue";
}else if(value == 5){
root.setBackgroundColor(ContextCompat.getColor(MainActivity.this, R.color.Green));
currentColor = "green";
}else if(value == 6){
root.setBackgroundColor(ContextCompat.getColor(MainActivity.this, R.color.White));
currentColor = "white";
}else if(value == 7){
root.setBackgroundColor(ContextCompat.getColor(MainActivity.this, R.color.Black));
currentColor = "black";
}else if(value == 8){
root.setBackgroundColor(ContextCompat.getColor(MainActivity.this, R.color.Salmon));
currentColor = "salmon";
}else if(value == 9){
root.setBackgroundColor(ContextCompat.getColor(MainActivity.this, R.color.Violet));
currentColor = "violet";
}else if(value == 10){
root.setBackgroundColor(ContextCompat.getColor(MainActivity.this, R.color.Cyan));
currentColor = "cyan";
}else if(value == 11){
root.setBackgroundColor(ContextCompat.getColor(MainActivity.this, R.color.DarkGray));
currentColor = "darkgray";
}else if(value == 12){
root.setBackgroundColor(ContextCompat.getColor(MainActivity.this, R.color.Gray));
currentColor = "gray";
}else if(value == 13){
root.setBackgroundColor(ContextCompat.getColor(MainActivity.this, R.color.Chocolate));
currentColor = "chocolate";
}else if(value == 14){
root.setBackgroundColor(ContextCompat.getColor(MainActivity.this, R.color.Silver));
currentColor = "silver";
}
}
}, 1000);
}else if(lvl<15 && lvl>9) {
new Timer().schedule(new TimerTask() {
@Override
public void run() {
if(value == 1){
root.setBackgroundColor(ContextCompat.getColor(MainActivity.this, R.color.Red));
currentColor = "red";
}else if(value == 2){
root.setBackgroundColor(ContextCompat.getColor(MainActivity.this, R.color.Pink));
currentColor = "pink";
}else if(value == 3){
root.setBackgroundColor(ContextCompat.getColor(MainActivity.this, R.color.Orange));
currentColor = "orange";
}else if(value == 4){
root.setBackgroundColor(ContextCompat.getColor(MainActivity.this, R.color.Blue));
currentColor = "blue";
}else if(value == 5){
root.setBackgroundColor(ContextCompat.getColor(MainActivity.this, R.color.Green));
currentColor = "green";
}else if(value == 6){
root.setBackgroundColor(ContextCompat.getColor(MainActivity.this, R.color.White));
currentColor = "white";
}else if(value == 7){
root.setBackgroundColor(ContextCompat.getColor(MainActivity.this, R.color.Black));
currentColor = "black";
}else if(value == 8){
root.setBackgroundColor(ContextCompat.getColor(MainActivity.this, R.color.Salmon));
currentColor = "salmon";
}else if(value == 9){
root.setBackgroundColor(ContextCompat.getColor(MainActivity.this, R.color.Violet));
currentColor = "violet";
}else if(value == 10){
root.setBackgroundColor(ContextCompat.getColor(MainActivity.this, R.color.Cyan));
currentColor = "cyan";
}else if(value == 11){
root.setBackgroundColor(ContextCompat.getColor(MainActivity.this, R.color.DarkGray));
currentColor = "darkgray";
}else if(value == 12){
root.setBackgroundColor(ContextCompat.getColor(MainActivity.this, R.color.Gray));
currentColor = "gray";
}else if(value == 13){
root.setBackgroundColor(ContextCompat.getColor(MainActivity.this, R.color.Chocolate));
currentColor = "chocolate";
}else if(value == 14){
root.setBackgroundColor(ContextCompat.getColor(MainActivity.this, R.color.Silver));
currentColor = "silver";
}
}
}, 750);
}else if(lvl<20 && lvl>14){
new Timer().schedule(new TimerTask() {
@Override
public void run() {
if(value == 1){
root.setBackgroundColor(ContextCompat.getColor(MainActivity.this, R.color.Red));
currentColor = "red";
}else if(value == 2){
root.setBackgroundColor(ContextCompat.getColor(MainActivity.this, R.color.Pink));
currentColor = "pink";
}else if(value == 3){
root.setBackgroundColor(ContextCompat.getColor(MainActivity.this, R.color.Orange));
currentColor = "orange";
}else if(value == 4){
root.setBackgroundColor(ContextCompat.getColor(MainActivity.this, R.color.Blue));
currentColor = "blue";
}else if(value == 5){
root.setBackgroundColor(ContextCompat.getColor(MainActivity.this, R.color.Green));
currentColor = "green";
}else if(value == 6){
root.setBackgroundColor(ContextCompat.getColor(MainActivity.this, R.color.White));
currentColor = "white";
}else if(value == 7){
root.setBackgroundColor(ContextCompat.getColor(MainActivity.this, R.color.Black));
currentColor = "black";
}else if(value == 8){
root.setBackgroundColor(ContextCompat.getColor(MainActivity.this, R.color.Salmon));
currentColor = "salmon";
}else if(value == 9){
root.setBackgroundColor(ContextCompat.getColor(MainActivity.this, R.color.Violet));
currentColor = "violet";
}else if(value == 10){
root.setBackgroundColor(ContextCompat.getColor(MainActivity.this, R.color.Cyan));
currentColor = "cyan";
}else if(value == 11){
root.setBackgroundColor(ContextCompat.getColor(MainActivity.this, R.color.DarkGray));
currentColor = "darkgray";
}else if(value == 12){
root.setBackgroundColor(ContextCompat.getColor(MainActivity.this, R.color.Gray));
currentColor = "gray";
}else if(value == 13){
root.setBackgroundColor(ContextCompat.getColor(MainActivity.this, R.color.Chocolate));
currentColor = "chocolate";
}else if(value == 14){
root.setBackgroundColor(ContextCompat.getColor(MainActivity.this, R.color.Silver));
currentColor = "silver";
}
}
}, 600);
}else if(lvl<30 && lvl>19){
new Timer().schedule(new TimerTask() {
@Override
public void run() {
if(value == 1){
root.setBackgroundColor(ContextCompat.getColor(MainActivity.this, R.color.Red));
currentColor = "red";
}else if(value == 2){
root.setBackgroundColor(ContextCompat.getColor(MainActivity.this, R.color.Pink));
currentColor = "pink";
}else if(value == 3){
root.setBackgroundColor(ContextCompat.getColor(MainActivity.this, R.color.Orange));
currentColor = "orange";
}else if(value == 4){
root.setBackgroundColor(ContextCompat.getColor(MainActivity.this, R.color.Blue));
currentColor = "blue";
}else if(value == 5){
root.setBackgroundColor(ContextCompat.getColor(MainActivity.this, R.color.Green));
currentColor = "green";
}else if(value == 6){
root.setBackgroundColor(ContextCompat.getColor(MainActivity.this, R.color.White));
currentColor = "white";
}else if(value == 7){
root.setBackgroundColor(ContextCompat.getColor(MainActivity.this, R.color.Black));
currentColor = "black";
}else if(value == 8){
root.setBackgroundColor(ContextCompat.getColor(MainActivity.this, R.color.Salmon));
currentColor = "salmon";
}else if(value == 9){
root.setBackgroundColor(ContextCompat.getColor(MainActivity.this, R.color.Violet));
currentColor = "violet";
}else if(value == 10){
root.setBackgroundColor(ContextCompat.getColor(MainActivity.this, R.color.Cyan));
currentColor = "cyan";
}else if(value == 11){
root.setBackgroundColor(ContextCompat.getColor(MainActivity.this, R.color.DarkGray));
currentColor = "darkgray";
}else if(value == 12){
root.setBackgroundColor(ContextCompat.getColor(MainActivity.this, R.color.Gray));
currentColor = "gray";
}else if(value == 13){
root.setBackgroundColor(ContextCompat.getColor(MainActivity.this, R.color.Chocolate));
currentColor = "chocolate";
}else if(value == 14){
root.setBackgroundColor(ContextCompat.getColor(MainActivity.this, R.color.Silver));
currentColor = "silver";
}
}
}, 550);
}else if(lvl<50 && lvl>29){
new Timer().schedule(new TimerTask() {
@Override
public void run() {
if(value == 1){
root.setBackgroundColor(ContextCompat.getColor(MainActivity.this, R.color.Red));
currentColor = "red";
}else if(value == 2){
root.setBackgroundColor(ContextCompat.getColor(MainActivity.this, R.color.Pink));
currentColor = "pink";
}else if(value == 3){
root.setBackgroundColor(ContextCompat.getColor(MainActivity.this, R.color.Orange));
currentColor = "orange";
}else if(value == 4){
root.setBackgroundColor(ContextCompat.getColor(MainActivity.this, R.color.Blue));
currentColor = "blue";
}else if(value == 5){
root.setBackgroundColor(ContextCompat.getColor(MainActivity.this, R.color.Green));
currentColor = "green";
}else if(value == 6){
root.setBackgroundColor(ContextCompat.getColor(MainActivity.this, R.color.White));
currentColor = "white";
}else if(value == 7){
root.setBackgroundColor(ContextCompat.getColor(MainActivity.this, R.color.Black));
currentColor = "black";
}else if(value == 8){
root.setBackgroundColor(ContextCompat.getColor(MainActivity.this, R.color.Salmon));
currentColor = "salmon";
}else if(value == 9){
root.setBackgroundColor(ContextCompat.getColor(MainActivity.this, R.color.Violet));
currentColor = "violet";
}else if(value == 10){
root.setBackgroundColor(ContextCompat.getColor(MainActivity.this, R.color.Cyan));
currentColor = "cyan";
}else if(value == 11){
root.setBackgroundColor(ContextCompat.getColor(MainActivity.this, R.color.DarkGray));
currentColor = "darkgray";
}else if(value == 12){
root.setBackgroundColor(ContextCompat.getColor(MainActivity.this, R.color.Gray));
currentColor = "gray";
}else if(value == 13){
root.setBackgroundColor(ContextCompat.getColor(MainActivity.this, R.color.Chocolate));
currentColor = "chocolate";
}else if(value == 14){
root.setBackgroundColor(ContextCompat.getColor(MainActivity.this, R.color.Silver));
currentColor = "silver";
}
}
}, 500);
}else if(lvl<49){
new Timer().schedule(new TimerTask() {
@Override
public void run() {
if(value == 1){
root.setBackgroundColor(ContextCompat.getColor(MainActivity.this, R.color.Red));
currentColor = "red";
}else if(value == 2){
root.setBackgroundColor(ContextCompat.getColor(MainActivity.this, R.color.Pink));
currentColor = "pink";
}else if(value == 3){
root.setBackgroundColor(ContextCompat.getColor(MainActivity.this, R.color.Orange));
currentColor = "orange";
}else if(value == 4){
root.setBackgroundColor(ContextCompat.getColor(MainActivity.this, R.color.Blue));
currentColor = "blue";
}else if(value == 5){
root.setBackgroundColor(ContextCompat.getColor(MainActivity.this, R.color.Green));
currentColor = "green";
}else if(value == 6){
root.setBackgroundColor(ContextCompat.getColor(MainActivity.this, R.color.White));
currentColor = "white";
}else if(value == 7){
root.setBackgroundColor(ContextCompat.getColor(MainActivity.this, R.color.Black));
currentColor = "black";
}else if(value == 8){
root.setBackgroundColor(ContextCompat.getColor(MainActivity.this, R.color.Salmon));
currentColor = "salmon";
}else if(value == 9){
root.setBackgroundColor(ContextCompat.getColor(MainActivity.this, R.color.Violet));
currentColor = "violet";
}else if(value == 10){
root.setBackgroundColor(ContextCompat.getColor(MainActivity.this, R.color.Cyan));
currentColor = "cyan";
}else if(value == 11){
root.setBackgroundColor(ContextCompat.getColor(MainActivity.this, R.color.DarkGray));
currentColor = "darkgray";
}else if(value == 12){
root.setBackgroundColor(ContextCompat.getColor(MainActivity.this, R.color.Gray));
currentColor = "gray";
}else if(value == 13){
root.setBackgroundColor(ContextCompat.getColor(MainActivity.this, R.color.Chocolate));
currentColor = "chocolate";
}else if(value == 14){
root.setBackgroundColor(ContextCompat.getColor(MainActivity.this, R.color.Silver));
currentColor = "silver";
}
}
}, 350);
}
}
當我刪除函數及其調用時,該應用程序運行良好。 我很新的android,但有java體驗。 對於這個函數的調用是在onCreate方法中,默認情況下出現在那個方法中。 我沒有把任何東西放在佈局XML文件,我沒有其他功能,但onCreate在我的主要活動。
編輯1:刪除計時器使應用程序不會崩潰。我會如何替換定時器函數,讓代碼在一秒之後運行?
編輯2: Logcat:---------開始崩潰 07-28 15:15:37.259 32203-32203 /? E/AndroidRuntime:致命例外:main 進程:io.eliot.colorstop,PID:32203 java.lang.RuntimeException:無法啓動活動ComponentInfo {io.eliot.colorstop/io.eliot.colorstop.MainActivity}:java。 lang.NullPointerException:試圖在android上的android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2984) 上的空對象引用 上調用虛擬方法'android.view.View android.view.View.getRootView()'。在android.app.ActivityThread上的app.ActivityThread.handleLaunchActivity(ActivityThread.java:3045) at android.app.ActivityThread.-wrap14(ActivityThread.java) at android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1642) at android.os .Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:154) at android.app.ActivityThread.main(ActivityThread.java:6776) at java.lang.reflect.Method.invoke(Native Method) at com .android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:1520) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1410) 引起:java.lang.NullPointerException:嘗試在io.eliot.colorstop.MainActivity.whileLoopForChange(MainActivity.java:34) 處的空對象引用 上調用虛擬方法'android.view.View android.view.View.getRootView()' .MainActivity.onCreate(MainActivity.java:29) 在android.app.Activity.performCreate(Activity.java:6955) 在android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1126) 在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2927) 在機器人.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3045) at android.app.ActivityThread.-wrap14(ActivityThread.java) at android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1642) at android。 os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:154) at android.app.ActivityThread.main(ActivityThread.java:6776) 在java.lang.reflect.Method.invoke(本機方法) 在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:1520) 在com.android.internal.os.ZygoteInit.main( ZygoteInit.java:1410)
看完logcat後,似乎它得到了崩潰它的根視圖。
什麼是logcat?放在這裏更好地幫助 –
你能告訴我們錯誤嗎? – Lino
'while(gameRunning = true){'將其設置爲true,不會比較 – inarilo