2011-05-02 75 views
0

我想显示自从活动在地图数据视图上开始以来的时间。Android定时器停止并开始

这是我正在使用的计时器代码。我希望计时器在5分钟后停止。我必须添加到此代码才能使其工作?

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); 
    } 
} 

这里是我的布局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> 

目前,我再也看不到我的地图视图,我只看到我的TextView显示的时间。

回答

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

+0

如何查看Google地图中的计时器? – anji 2011-05-02 22:34:59

+0

@koko您无法修改Google地图。尽管您的活动可以使用“com.google.android.maps.MapView”向用户显示地图。 – Jerome 2011-05-02 22:37:38

+0

我将此代码添加到已显示地图的我的项目中,但是当我添加此代码时,地图消失并且只有计数才会出现,即使地图中的叠加项消失 – anji 2011-05-02 22:42:17

0

此代码看起来像它计算您的活动已运行的时间并显示此数量。

如果您希望活动停止,您应该在您满足所需条件时停止在updateTimeView方法中调用mHandler.postDelayed(mUpdateTime, 1000);。 ColdForged建议符合您的标准

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

要同时获得您的TextView和你的MapView显示在同一时间,你应该使用下面的XML:

<?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> 

你应该修改onCreate方法的以下内容:

@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); 
}