2011-03-10 72 views
0

我想在android中打印日期。 一旦我第一次运行它获得正确的时间和日期。但是当我安装在手机中并运行它时,它并不正确。它在我安装它时只给出相同的结果。 我的代码是在这里:在android中打印日期和时间时出现问题

package com.datePrint; 

    import java.util.Calendar; 
    import java.util.GregorianCalendar; 

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

    public class DatePrint extends Activity { 
     /** Called when the activity is first created. */ 

     static Calendar cal = new GregorianCalendar(); 
     static int hour = cal.get(Calendar.HOUR); 
     static int minute = cal.get(Calendar.MINUTE); 
     static int second = cal.get(Calendar.SECOND); 
     static int year = cal.get(Calendar.YEAR); 
     static int month = cal.get(Calendar.MONTH)+1; 
     static int day = cal.get(Calendar.DATE); 
     static String date = day+"_"+month+"_"+year+"_"; 
     static String Current_Time = date+ hour + "_" + minute + "_" + second; 

     public static String OUTPUT_FILE = "/sdcard/"+Current_Time+".mp4"; 
     @Override 
     public void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      TextView tv = new TextView(this); 

      tv.setText(Current_Time); 
      setContentView(tv); 
     } 
    } 

任何人可以帮助我解决这个问题提前

回答

0

感谢我确信API级别是你的情况不同。我很少回头面对同样的问题。当我在1.6设备上运行时,它工作正常,但不在2.1模拟器上。

试试这个代码。\

java.text.SimpleDateFormat format = new SimpleDateFormat(
      "dd-MM-yyyy"); 
      SimpleDateFormat sdfDestination = new SimpleDateFormat("E MMM dd"); 

      java.util.Calendar cal = Calendar.getInstance(new SimpleTimeZone(0, 
        "GMT+5000")); 

      TimeZone timeZone = TimeZone.getDefault(); 
      format.setTimeZone(timeZone); 
      format.setCalendar(cal);    
      java.util.Date date = null; 
      String tmp =""; 
      try { 
       date = format.parse(EditProfile.dateOFBirth); 
       Log.v("A", "Date Of Birth ..." + date); 
       Calendar tmpCal = Calendar.getInstance(); 
       tmpCal.setTime(date); 
       tmp = sdfDestination.format(date) + " 00:00:00 IST "+tmpCal.get(Calendar.YEAR); 
       Log.v("A", "Date Of Birth new Date..." + tmp); 
      } catch (Exception e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } 
2

您已声明的所有变量static,所以首先删除它从所有

你应该参考和理解静态的概念。

0

@PM有它的大部分,但没有解释为什么,错过了一个关键点:一个活动继续工作,直到东西杀死它(无论是你没明确关机;吨为,由OS杀害它释放资源,或从应用程序服务面板强制关闭),因此第二次“运行”它只是用仍然加载到静态变量中的相同值重新激活它。如果强制关闭它,下一次激活将重新创建一个新时间,然后它将保留,直到再次强制关闭-d。

而缺失的关键是你在onCreate中做的,所以即使没有静态变量它也只会发生一次。您需要在激活时执行此操作,或者安排退出以关闭活动。