Je fais l'application Score Keeper, mais j'ai décidé d'ajouter une minuterie à elle. J'ai regardé à travers les codes et les tutoriels comment en ajouter un et j'ai fini par copier/coller un code dans mon application. Il ne semble pas y avoir d'erreur, mais l'application tombe en panne quand je la charge et ma connaissance limitée de Java m'empêche de trouver la raison!App se bloque lors de la construction, mais il n'y a pas d'erreurs. (Score Keeper App mis à jour)
Ceci est mon code (pas sûr où toutes les importations viennent!):
package com.example.android.footballscorekeeper;
import android.annotation.SuppressLint;
import android.annotation.TargetApi;
import android.app.Activity;
import android.os.Build;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.view.Window;
import android.widget.Button;
import android.widget.TextView;
import android.os.CountDownTimer;
import android.view.View.OnClickListener;
import org.w3c.dom.Text;
import java.lang.annotation.Target;
import java.util.concurrent.TimeUnit;
public class MainActivity extends Activity {
int scoreHome = 0;
int scoreAway = 0;
int onTargetHome = 0;
int onTargetAway = 0;
int offTargetHome = 0;
int offTargetAway = 0;
Button startTime, stopTime, resetTime, resumeTime;
TextView timerText;
//Declare a variable to hold count down timer's paused status
private boolean isPaused = false;
//Declare a variable to hold count down timer's paused status
private boolean isCanceled = false;
//Declare a variable to hold CountDownTimer remaining time
private long timeRemaining = 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
requestWindowFeature(Window.FEATURE_NO_TITLE);
startTime = (Button) findViewById(R.id.startTime);
stopTime = (Button) findViewById(R.id.stopTime);
resumeTime = (Button) findViewById(R.id.resumeTime);
resetTime = (Button) findViewById(R.id.resetTime);
timerText = (TextView) findViewById(R.id.timerText);
stopTime.setEnabled(false);
resumeTime.setEnabled(false);
resetTime.setEnabled(false);
timerText.setText("00:20:00");
//Initially disabled the pause, resume and cancel button
stopTime.setEnabled(false);
resumeTime.setEnabled(false);
resetTime.setEnabled(false);
//Set a Click Listener for start button
startTime.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
isPaused = false;
isCanceled = false;
//Disable the start and pause button
startTime.setEnabled(false);
resumeTime.setEnabled(false);
//Enabled the pause and cancel button
stopTime.setEnabled(true);
resetTime.setEnabled(true);
CountDownTimer timer;
long millisInFuture = 30000; //30 seconds
long countDownInterval = 1000; //1 second
//Initialize a new CountDownTimer instance
timer = new CountDownTimer(millisInFuture, countDownInterval) {
public void onTick(long millisUntilFinished) {
//do something in every tick
if (isPaused || isCanceled) {
//If the user request to cancel or paused the
//CountDownTimer we will cancel the current instance
cancel();
} else {
//Display the remaining seconds to app interface
//1 second = 1000 milliseconds
timerText.setText("" + millisUntilFinished/1000);
//Put count down timer remaining time in a variable
timeRemaining = millisUntilFinished;
}
}
public void onFinish() {
//Do something when count down finished
timerText.setText("Done");
//Enable the start button
startTime.setEnabled(true);
//Disable the pause, resume and cancel button
stopTime.setEnabled(false);
resumeTime.setEnabled(false);
resetTime.setEnabled(false);
}
}.start();
}
});
//Set a Click Listener for pause button
stopTime.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
//When user request to pause the CountDownTimer
isPaused = true;
//Enable the resume and cancel button
resumeTime.setEnabled(true);
resetTime.setEnabled(true);
//Disable the start and pause button
startTime.setEnabled(false);
stopTime.setEnabled(false);
}
});
//Set a Click Listener for resume button
resumeTime.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
//Disable the start and resume button
startTime.setEnabled(false);
resumeTime.setEnabled(false);
//Enable the pause and cancel button
stopTime.setEnabled(true);
resetTime.setEnabled(true);
//Specify the current state is not paused and canceled.
isPaused = false;
isCanceled = false;
//Initialize a new CountDownTimer instance
long millisInFuture = timeRemaining;
long countDownInterval = 1000;
new CountDownTimer(millisInFuture, countDownInterval) {
public void onTick(long millisUntilFinished) {
//Do something in every tick
if (isPaused || isCanceled) {
//If user requested to pause or cancel the count down timer
cancel();
} else {
timerText.setText("" + millisUntilFinished/1000);
//Put count down timer remaining time in a variable
timeRemaining = millisUntilFinished;
}
}
public void onFinish() {
//Do something when count down finished
timerText.setText("Done");
//Disable the pause, resume and cancel button
stopTime.setEnabled(false);
resumeTime.setEnabled(false);
resetTime.setEnabled(false);
//Enable the start button
startTime.setEnabled(true);
}
}.start();
//Set a Click Listener for cancel/stop button
resetTime.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//When user request to cancel the CountDownTimer
isCanceled = true;
//Disable the cancel, pause and resume button
stopTime.setEnabled(false);
resumeTime.setEnabled(false);
resetTime.setEnabled(false);
//Enable the start button
startTime.setEnabled(true);
//Notify the user that CountDownTimer is canceled/stopped
timerText.setText("CountDownTimer Canceled/stopped.");
}
});
}
});
//Set a Click Listener for cancel/stop button
resetTime.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//When user request to cancel the CountDownTimer
isCanceled = true;
//Disable the cancel, pause and resume button
stopTime.setEnabled(false);
resumeTime.setEnabled(false);
resetTime.setEnabled(false);
//Enable the start button
startTime.setEnabled(true);
//Notify the user that CountDownTimer is canceled/stopped
timerText.setText("CountDownTimer Canceled/stopped.");
}
});
}
public void displayScoreHome(int score) {
TextView scoreHome = (TextView) findViewById(R.id.team_a_score);
scoreHome.setText(String.valueOf(score));
}
public void displayScoreAway(int score) {
TextView scoreAway = (TextView) findViewById(R.id.team_b_score);
scoreAway.setText(String.valueOf(score));
}
public void displayOnTargetHome(int score) {
TextView onTargetHome = (TextView) findViewById(R.id.team_a_ontarget);
onTargetHome.setText(String.valueOf(score));
}
public void displayOnTargetAway(int score) {
TextView onTargetAway = (TextView) findViewById(R.id.team_b_ontarget);
onTargetAway.setText(String.valueOf(score));
}
public void displayOffTargetHome(int score) {
TextView offTargetHome = (TextView) findViewById(R.id.team_a_offtarget);
offTargetHome.setText(String.valueOf(score));
}
public void displayOffTargetAway(int score) {
TextView offTargetAway = (TextView) findViewById(R.id.team_b_offtarget);
offTargetAway.setText(String.valueOf(score));
}
public void addGoalHome(View v) {
scoreHome = scoreHome + 1;
displayScoreHome(scoreHome);
}
public void addGoalAway(View v) {
scoreAway = scoreAway + 1;
displayScoreAway(scoreAway);
}
public void addOnTargetHome(View v) {
onTargetHome = onTargetHome + 1;
displayOnTargetHome(onTargetHome);
}
public void addOnTargetAway(View v) {
onTargetAway = onTargetAway + 1;
displayOnTargetAway(onTargetAway);
}
public void addOffTargetHome(View v) {
offTargetHome = offTargetHome + 1;
displayOffTargetHome(offTargetHome);
}
public void addOffTargetAway(View v) {
offTargetAway = offTargetAway + 1;
displayOffTargetAway(offTargetAway);
}
public void resetScore(View v) {
scoreHome = 0;
scoreAway = 0;
onTargetHome = 0;
onTargetAway = 0;
offTargetHome = 0;
offTargetAway = 0;
displayScoreHome(scoreHome);
displayScoreAway(scoreAway);
displayOnTargetHome(onTargetHome);
displayOnTargetAway(onTargetAway);
displayOffTargetHome(offTargetHome);
displayOffTargetAway(offTargetAway);
}
}
C'est le journal des erreurs:
07-01 13: 42: 49,407 21197 -21197/com.example.android.footballscorekeeper E/AndroidRuntime: FATAL EXCEPTION: principal Processus: com.example.android.footballscorekeeper, PID: 21197 java.lang.RuntimeException: Impossible de démarrer l'activité ComposantInfo {com.example.android.footballscorekeeper/com.example.android.footballscorekeeper.MainActivity}: android.util.AndroidRuntimeException: requestFeature() doit être appelé avant d'ajouter le contenu à android.app. ActivityThread.performLaunchActivity (ActivityThread.java:3253) à android.app.ActivityThread.handleLaunchActivity (ActivityThread.java:3349) à android.app.ActivityThread.access 1100 $ (ActivityThread.java:221) à android.app .ActivityThread $ H.handleMessage (ActivityThread.java:1794) sur android.o s.Handler.dispatchMessage (Handler.java:102) à android.os.Looper.loop (Looper.java:158) à android.app.ActivityThread.main (ActivityThread.java:7225) à java.lang. reflect.Method.invoke (méthode native) à com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:1230) à com.android.internal.os.ZygoteInit.main (ZygoteInit.java: 1120) Causé par: android.util.AndroidRuntimeException: requestFeature() doit être appelé avant d'ajouter du contenu at com.android.internal.policy.PhoneWindow.requestFeature (PhoneWindow .java: 398) à android.app.Activity.requestWindowFeature (Activity.java:3993) à com.example.android.footballscorekeeper.MainActivity.onCreate (MainActivity.java:46) à android.app.Activity. performCreate (Activity.java:6876) à android.app.Instrumentation.callActivityOnCreate (Instrumentation.java:1135) à android.app.ActivityThread.performLaunchActivity (ActivityThread.java:3206) à android.app.ActivityThread .handleLaunchActivity (ActivityThread.java:3349) at android.app.ActivityThread. accès 1100 $ (ActivityThread.java:221) à android.app.ActivityThread $ H.handleMessage (ActivityThread.java:1794) à android.os.Handler.dispatchMessage (Handler.java:102) à android.os. Looper.loop (Looper.java:158) at android.app.ActivityThread.main (ActivityThread.java: 7225) à java.lang.reflect.Method.invoke (Native Method) à com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:1230) à com.android.internal. os.ZygoteInit.main (ZygoteInit.java:1120) 07-01 13: 43: 16.977 21197-21197/com.example.android.footballscorekeeper I/Processus: Signal d'envoi. PID: 21197 SIG: 9
Il serait préférable que vous partagiez le journal des erreurs. –
Essayez ceci: - https://stackoverflow.com/a/16939962/6060743 – beginner