2017-07-01 5 views
0

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

+2

Il serait préférable que vous partagiez le journal des erreurs. –

+0

Essayez ceci: - https://stackoverflow.com/a/16939962/6060743 – beginner

Répondre

0

Tout comme les journaux que vous disent, vous devez appeler requestWindowFeature avant d'appeler super.onCreate et setContentView.

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    requestWindowFeature(Window.FEATURE_NO_TITLE); 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    ... 
} 

Regardez également this question.

+0

belle! :) Je vous remercie! –