2011-05-02 7 views
0

Je souhaite afficher l'heure depuis le début de l'activité sur une vue des données cartographiques.Minuterie Android Arrêt et démarrage

Voici le code de minuterie que j'utilise. Je voudrais que la minuterie s'arrête après 5 minutes. Que dois-je ajouter à ce code pour le faire fonctionner?

package timer.tr; 

import android.app.Activity; 
import android.os.Bundle; 
import android.os.Handle; 
import android.os.Handler; 
import android.widget.TextView; 

public class timer extends Activity { 
    private TextView timeView; 
    private int hour = 0; 
    private int min = 0; 
    private int sec = 0; 
    String mTimeFormat = "%02d:%02d:%02d"; 
    final private Handler mHandler = new Handler(); 
    Runnable mUpdateTime = new Runnable() { 
     public void run() { updateTimeView(); } 
    }; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     timeView = new TextView(this); 
     timeView.setText(String.format(mTimeFormat, hour, min, sec)); 
     setContentView(timeView); 
     mHandler.postDelayed(mUpdateTime, 1000); 
    } 

    public void updateTimeView() { 
     sec += 1; 
     if(sec >= 60) { 
      sec = 0; 
      min += 1; 
      if (min >= 60) { 
       min = 0; 
       hour += 1; 
      } 
     } 
     timeView.setText(String.format(mTimeFormat, hour, min, sec)); 
     mHandler.postDelayed(mUpdateTime, 1000); 
    } 
} 

Voici ma mise en page XML:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:orientation="vertical" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
> 
<com.google.android.maps.MapView 
    android:id="@+id/mapView" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:enabled="true" 
    android:clickable="true" 
    android:apiKey="0cWhB29uXURimKWeF3lASx-MHSdekdEUZ1oZ-MQ" 
    /> 
    <RelativeLayout android:layout_height="wrap_content" android:id="@+id/relativeLayout1" android:layout_width="fill_parent"></RelativeLayout> 
    </LinearLayout> 

Actuellement, je ne vois plus mon point de vue sur la carte, je ne vois que mon TextView l'affichage du temps.

Répondre

0
... 
timeView.setText(String.format(mTimeFormat, hour, min, sec)); 
if(min < 5) 
    mHandler.postDelayed(mUpdateTime, 1000); 

?

+0

comment puis-je voir la minuterie dans google maps? – anji

+0

@koko Vous ne pouvez pas modifier Google Maps. Votre activité peut utiliser un 'com.google.android.maps.MapView' pour afficher une carte à l'utilisateur. – Jerome

+0

J'ajoute ce code à mon projet qui montre déjà des cartes mais quand j'ajoute ce code la carte disparaît et seul le comptage apparaît même les éléments superposés sur la carte disparaissent – anji

0

Ce code semble compter l'heure à laquelle votre activité a été exécutée et affiche cette quantité.

Si vous souhaitez que l'activité s'arrête, vous devez arrêter d'appeler mHandler.postDelayed(mUpdateTime, 1000); dans votre méthode updateTimeView lorsque la condition souhaitée est remplie. suggestion ColdForged répond à vos critères

if(min < 5) 
    mHandler.postDelayed(mUpdateTime, 1000); 

Pour obtenir à la fois votre TextView et votre MapView pour afficher en même temps, vous devez utiliser le code XML suivant:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:orientation="vertical" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
> 
<com.google.android.maps.MapView 
    android:id="@+id/mapView" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:enabled="true" 
    android:clickable="true" 
    android:apiKey="0cWhB29uXURimKWeF3lASx-MHSdekdEUZ1oZ-MQ" 
    /> 
<TextView android:id="@+id/timeText" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:text="" /> 
</RelativeLayout> 

Et vous devez modifier votre méthode onCreate à la suivant:

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    timeView = findViewById(R.id.timeText); 
    timeView.setText(String.format(mTimeFormat, hour, min, sec)); 
    setContentView(R.layout.your_xml_filename_here); 
    mHandler.postDelayed(mUpdateTime, 1000); 
} 
Questions connexes