1

アクティビティが DB からデータを取得しない場合、これに関するトースト メッセージを表示します。次に、前のアクティビティを再充電しますが、この充電は非常に高速で、トースト メッセージはまだ数秒間表示されます。このメッセージの期間が必要ですが、メッセージの後に開始したいアクティビティの初期化を遅らせる方法がわかりません。

protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);     
setContentView(R.layout.aeiou);

...

if(!oArrayList.isEmpty()){

    ...

}else{          
    Toast.makeText(this.getApplicationContext(), "NO hay datos", Toast.LENGTH_LONG).show();     

    Intent intent = new Intent(this, PreviousActivity.class);
    startActivity(intent);   
}       

}

4

3 に答える 3

5

「else」内に、Toast メッセージが表示されている間スリープし、その後次のアクティビティを開始するスレッドを追加しました。

...}else{           
        Toast.makeText(this.getApplicationContext(), "NO hay datos", Toast.LENGTH_LONG).show();             

        final Intent intent = new Intent(this, OtherActivity.class);        

        Thread thread = new Thread(){
           @Override
           public void run() {
                try {
                   Thread.sleep(3500); // As I am using LENGTH_LONG in Toast
                   startActivity(intent);   
               } catch (Exception e) {
                   e.printStackTrace();
               }
           } 
        };

        thread.start();
    }               
于 2012-05-11T21:12:38.557 に答える
2
Toast.makeText(this, "your message", Toast.LENGTH_LONG).show();  

(new Handler())
    .postDelayed(
    new Runnable() {
    public void run() {
    // launch your activity here
    }
    }, timeInMillisecondTheToastIsShowingFor);

これにより、必要なだけアクティビティの起動が遅れます

于 2012-05-10T00:38:31.800 に答える
2

私の知る限り、トーストの期間は2つの値(長いものと短いもの)のうちの1つにのみ設定でき、両方ともユーザー定義できます。

独自の時間を設定し、終了時に通知を受け取るには、組み込みのトーストの代わりに独自のメカニズムを作成する必要があります...

ダイアログ(おそらくprogressDialog)を使用するか、他のすべての上にあるビューを作成してみてください。

于 2012-05-09T23:08:38.753 に答える