2016-04-09 30 views
0

Tekrar sorularım var ... Bu tarih geri sayımını nasıl düzeltebilirim? Bir uygulamayı başlattığımda her zaman bittiğini yazdı. Kodu gelecek tarihte yazarsam, uygulama da bittiğini yazdırır. Bana yardımcı olabilir misiniz? Eğer end_calendar tarihini değiştirmeden önceTarih geri sayım hatası

package lt.sviesioji.kdainiviesiojigimnazija; 


import android.os.CountDownTimer; 
import android.support.v4.app.Fragment; 
import android.os.Bundle; 
import android.support.v4.app.FragmentTransaction; 
import android.support.v7.app.AppCompatActivity; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.Button; 
import android.widget.TextView; 

import java.util.Calendar; 
import java.util.concurrent.TimeUnit; 


/** 
* A simple {@link Fragment} subclass. 
*/ 

public class PagrindinisFragment extends Fragment { 


public PagrindinisFragment() { 
    // Required empty public constructor 
} 

Button k,f; 
TextView tv_countdown; 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) { 
    final View rootView = inflater.inflate(R.layout.fragment_pagrindinis, container, 
      false); 

    ((AppCompatActivity)getActivity()).getSupportActionBar().setTitle("Kėdainių šviesioji gimnazija"); 

    tv_countdown = (TextView) rootView.findViewById(R.id.textView17); 

    Calendar start_calendar = Calendar.getInstance(); 
    Calendar end_calendar = Calendar.getInstance(); 

    long start_millis = start_calendar.getTimeInMillis(); //get the start time in milliseconds 
    long end_millis = end_calendar.getTimeInMillis(); //get the end time in milliseconds 
    long total_millis = (end_millis - start_millis); //total time in milliseconds 
    end_calendar.set(2005, 07, 1); // 10 = November, month start at 0 = January 

    //1000 = 1 second interval 
    CountDownTimer cdt = new CountDownTimer(total_millis, 1000) { 
     @Override 
     public void onTick(long millisUntilFinished) { 
      long days = TimeUnit.MILLISECONDS.toDays(millisUntilFinished); 
      millisUntilFinished -= TimeUnit.DAYS.toMillis(days); 

      long hours = TimeUnit.MILLISECONDS.toHours(millisUntilFinished); 
      millisUntilFinished -= TimeUnit.HOURS.toMillis(hours); 

      long minutes = TimeUnit.MILLISECONDS.toMinutes(millisUntilFinished); 
      millisUntilFinished -= TimeUnit.MINUTES.toMillis(minutes); 

      long seconds = TimeUnit.MILLISECONDS.toSeconds(millisUntilFinished); 

      tv_countdown.setText(days + ":" + hours + ":" + minutes + ":" + seconds); //You can compute the millisUntilFinished on hours/minutes/seconds 
     } 

     @Override 
     public void onFinish() { 
      tv_countdown.setText("Finish!"); 
     } 
    }; 
    cdt.start(); 

    k = (Button) rootView.findViewById(R.id.button2); 
    k.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View v) { 

      Fragment newFragment = new KalendoriusFragment(); 
      FragmentTransaction transaction = getFragmentManager().beginTransaction(); 
      transaction.replace(R.id.fragment_container, newFragment); 
      transaction.addToBackStack(null); 
      transaction.commit(); 
     } 
    }); 

    f = (Button) rootView.findViewById(R.id.button3); 
    f.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View v) { 

      Fragment newFragment = new FormulynasFragment(); 
      FragmentTransaction transaction = getFragmentManager().beginTransaction(); 
      transaction.replace(R.id.fragment_container, newFragment); 
      transaction.addToBackStack(null); 
      transaction.commit(); 
     } 
    }); 
    return rootView; 
} 
} 
+0

@Titus, bu satırı nereye koyabilirim? Bana söyler misin? – iBoucher

+0

Bir cevap gönderdim, yardım edip edemeyeceğine bakın. – Titus

cevap

0

Sen total_millis hesaplama ediyoruz. Bu, total_millis'un her zaman 0'a çok yakın olacağı anlamına gelir. Bunu düzeltmek için, farkı hesaplamak için önce end_calendar'un verilerini ayarlayın. İşte bir örnek:

Ben total_millis pozitif bir sayı olarak ayarlanır, böylece 2016 (ileride bir tarih) yıl değiştirdik
Calendar start_calendar = Calendar.getInstance(); 
Calendar end_calendar = Calendar.getInstance(); 
end_calendar.set(2016, 07, 1); // 10 = November, month start at 0 = January 

long start_millis = start_calendar.getTimeInMillis(); //get the start time in milliseconds 
long end_millis = end_calendar.getTimeInMillis(); //get the end time in milliseconds 
long total_millis = (end_millis - start_millis); //total time in milliseconds 

.

+0

Evet, işe yarıyor ama zaman doğru değil – iBoucher

+0

@iBoucher Tarih bu satır kullanılarak ayarlandı 'end_calendar.set (2016, 07, 1);' gereksinimlerinize göre değiştirin, bir veri olması gerekir. Bunun doğru çalışması için geleceği. – Titus

+0

Teşekkürler, dostum, sadece kötü veri yazıyorum ve göremiyorum ama şimdi çok iyi çalışıyor. Teşekkür ederim! :) – iBoucher