2016-04-07 15 views
0

Bir tırnak uygulaması yapıyorum ve uygulamanın, uygulamasımın başlangıç ​​sayfasındaki bir metni görüntülemesini istiyorum, ancak bunu doğru şekilde göremiyorum. İşte denedim kod ...Android uygulamasında bir metin perdayı nasıl görüntüleyebilirim

public class MainActivityFragment extends Fragment { 
    public MainActivityFragment() { 
    } 
    final Handler h = new Handler(); 
    TextView lv, nam, cate; 
    String randomQuotes, qNames, category; 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
          Bundle savedInstanceState) { 
     View rootView = inflater.inflate(R.layout.fragment_main, container, false); 
     lv = (TextView)rootView.findViewById(R.id.quotes); 
     nam = (TextView)rootView.findViewById(R.id.name); 
     btn = (Button)rootView.findViewById(R.id.share); 
     //List of quotes 
     ListView allQuote = (ListView)rootView.findViewById(R.id.liv); 

     //Display a text on screen in every 24hours 
     final Random rand = new Random(); 
     h.post(new Runnable(){ 
      @Override 
      public void run(){ 
       int x = rand.nextInt(AllQuotes.LIFE.length); 
       lv.setText(AllQuotes.LIFE[x]); 
       nam.setText(AllQuotes.NAMELIFE[x]); 
       h.postDelayed(this, 60000 * 24); 
      } 
     }); 


     return rootView; 
} 

Şimdiden teşekkürler!

+0

Yapmaya çalıştığınız şeyi (beklenen sonuç) ve sonuçların ne olduğunu açıklayabilir misiniz? – manabreak

+0

Tarihi oluşturmak için rasgele bir sayı oluşturmalısınız. Güncel tarihle rastgele tohumlamayı deneyin. – Elvisjames

+0

, uygulamanızın her 24 saatte bir çalışmasını istiyorsanız ve rastgele bir alıntı yapmak istiyorsanız ** AlarmManager **, bir hizmet oluşturun ve devam edin, ancak uygulamanızın çalışmaya başladıktan sonra günde yeni bir teklif göstermesini istiyorsanız, tarih kaydedebilirsiniz ve bu teklifin zaman yarın bir yerde o zaman çalıştırmak bu tarih ve saat 24 saat olduysa, yeni teklif –

cevap

0

Kullanıcı, uygulamanızın açılış sayfasına 24 saat boyunca bakmayacağı için teklifi başka bir konudan güncellemeniz gerektiğini sanmıyorum. Başlangıç ​​sayfası her oluşturulduğunda geçerli tarihe göre bir qoute almanız yeterlidir. Eğer her 24 saatte çalıştırmak istiyorsanız

//Display a text on screen in every 24 hours 
//seed the random with the current date to get new random number only if the date is changed. 
Calendar cal = Calendar.getInstance(); 
int seedVal = cal.get(Calendar.YEAR)*12*30+cal.get(Calendar.MONTH)*30+cal.get(Calendar.DAY_OF_MONTH); 
Random rand = new Random(seedVal); 
rand.nextInt(AllQuotes.LIFE.length); 
lv.setText(AllQuotes.LIFE[x]); 
nam.setText(AllQuotes.NAMELIFE[x]); 
+0

seedVal'in nasıl çalıştığını bilmiyorum, ancak bunların tümünü göstermeden önce aynı alıntıyı gösterme olasılığı yok mu? – Nanoc

+0

Evet, ancak düz rasgele kullanmanın da aynı eğilimi var, değil mi? Belki de alıntılar bir çeşit karıştırılmış listeye konulmalı ve tarih sayısının öğelerin sayısına göre aşamalı olarak alınmalıdır. – Elvisjames

+0

Düşünmek istedim, her gün bir sekretsel olarak göstermek istedim, bu yüzden ilk, en sonuncuya kadar tekrar göstermeyecek, çünkü bir SharedPreferences yaklaşımı daha iyi olmalı. – Nanoc

0
  1. , matematik o milisaniye dönüştürmek 60000 * 60 * 24 olduğunu. 60000 * 24, size 24 dakika verecektir.
  2. Böyle uzun aralıklar için AlarmManager kullanıyor olmalısınız.
İlgili konular