2016-04-07 6 views
0

私はクォートアプリを構築しています。私のアプリのスタートアップページにテキストを表示したいのですが、正しく表示されないようです。ここに私が試したコードは...私のアンドロイドアプリにテキストパーデイを表示するには

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

ありがとうございます!

+0

あなたがしようとしていること(期待される結果)とその結果は何ですか? – manabreak

+0

日付から乱数を作成する必要があります。ランダムを現在の日付でシードしてみてください。 – Elvisjames

+0

アプリを24時間ごとに実行し、ランダムな見積もりを表示する場合** AlarmManager **、サービスを作成して続行しますが、アプリの実行開始後1日に新しい見積もりが表示されるようにするには、そして、この見積もり時刻は、明日の実行時には、この日時を検索します。約24時間であれば、新しい見積もりを表示します。 –

答えて

0

別のスレッドから見積もりを更新する必要はありません。ユーザーがアプリのスタートアップページを24時間見ていないためです。スタートアップページが作成されるたびに、現在の日付に応じてqouteを取得してください。

//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の仕組みは分かりませんが、これを表示する前に同じ引用符を表示する確率はありませんか? – Nanoc

+0

はい、プレーンランダムを使用しても同じ傾向がありますか?たぶん引用符は何らかの並べ替えリストに入れて、日付モジュラスに従ってアイテムの数に応じて段階的に取得する必要があります。 – Elvisjames

+0

私はopが一日一回それを見せたいと思っていたので、最初はSharedPreferencesの方が良いはずです。 – Nanoc

0
  1. あなたはそれが24時間ごとに実行したい場合は、ミリ秒に変換するための数学は60000 * 60 * 24です。 60000 * 24はあなたに24分を与えます。
  2. このような長い間隔にはAlarmManagerを使用する必要があります。
関連する問題