2011-11-09 23 views
2

を離れる前に呼び出される: onPauseは、私は次のようしている現在のアクティビティ

dialogwait = ProgressDialog.show(Playlist.this, 
          "Loading...", "Please wait..", true); 

私は ProgressDialogを作成し、私は onPause()でそれをdissmis:

public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
       .... 
       populate(); 
       handler = new Handler(); 
     t = new Timer(); 
     t.scheduleAtFixedRate(new TimerTask() { 
      @Override 
      public void run() { 
       runOnUiThread(new Runnable() { 
        public void run() { 
         doReload1(); 
         populate(); 
        } 
       }); 

      } 

     }, 300, 30000); 
} 

private void populate() { 
    if (playlists.length != 0) { 
     MyListView = (ListView) findViewById(R.id.MyListView); 
     for (String item : playlists) { 
      Log.d("DEBUG", "item=" + item); 
     } 

     String[] adapterPlaylists = new String[playlists.length]; 
     for (int i = 0; i < playlists.length; i++) { 
      adapterPlaylists[i] = playlists[i]; 
     } 
     adapter1 = new ArrayAdapter<String>(this, 
       android.R.layout.simple_list_item_1, adapterPlaylists); 

     MyListView.setAdapter(adapter1); 
     adapter1.notifyDataSetChanged(); 

     MyListView.setOnItemClickListener(new OnItemClickListener() { 
      public void onItemClick(AdapterView<?> arg0, View v, 
        int position, long id) { 
       dialogwait = ProgressDialog.show(Playlist.this, 
         "Loading...", "Please wait..", true); 
       Intent i = new Intent(getBaseContext(), ViewPlaylist.class); 
       i.putExtra("id", idPlaylist[position]); 
       i.putExtra("timer", timerPlaylist[position]); 
       startActivity(i); 

       finish(); 
      } 
     }); 
    } else 
     System.out.println("playlist null"); 

} 

@Override 
protected void onPause() { 
    super.onPause(); 
    System.out.println("onPause Playlist!!!!!!"); 
    dialogwait.dismiss(); 
    t.cancel(); 
} 

事はここにいることです。 でもがの直後に呼び出されてから、さらにProgressDialogが作成されます。 任意のアイデアなぜすべてのソリューションのおかげ

+0

ブレークポイントを使用してコードをステップ実行してください。それが実際に呼び出されていることを確認するためにonPauseで少なくとも1、それ以外のものではありません。 – Warpzit

+0

私はので、私は新しい活動がonpauseあなたの現在の活動を置くので、それは自分自身を表示するために取得するとは思わないあなたはprogressdialogを作成した直後に新しい活動を開始し、それが右 – adrian

+0

後に呼び出されることを確認messages.I'mを入れてきました... – Warpzit

答えて

1

アンドロイドでDialogは、ブロックされませんので、これは - ??その背後に実行中のスレッド(このケースでは、あなたのActivity、特にあなたのonItemClickListener)を実行し続けることを意味しています。

クリックしたアイテムがロードされていることをユーザーに知らせるために、読み込みダイアログを表示するように見えます。私は、(1ののonClickから起動)を使用すると、次のアクティビティにそのダイアログを移動示唆して、そこからダイアログを表示し、閉じます。

0

私はこの問題は、あなたがあなたのOnItemClickListenerfinish()を呼び出していることが考えられていることと思います。これにより、あなたのonPause()実装がすぐにダイアログを閉じるため、あなたがアイテムをクリックするとすぐに現在のアクティビティが終了します。

たぶん、あなたはあなたのViewPlaylist活動は、むしろこの活動により作成されたときにダイアログを表示する必要があります。あなたの現在のアクティビティ(ダイアログまたは任意の他の活動)の上に

0

ものは、このようにonPauseが呼び出され、そのバックグラウンド活性ます。もしあれば、dialog.dismiss()はアクティビティ 'onResume'で呼び出されるべきです。実装では、ボタンをクリックするとダイアログが表示され、アクティビティが一時停止され、終了が呼び出されます。あなたのケースで別のアクティビティを起動する - あなたは、プロセスがあなたのダイアログは、このようにあなたが何かを行うには準備ができているユーザーに伝える、終了するに関連付けられている場合にのみ、却下呼び出す必要があります。 ダイアログのonDismiss内でアクティビティを起動します。 例:

AlertDialog alert = new AlertDialog.Builder(this).create(); 
    alert.setOnDismissListener(new OnDismissListener() { 
    @Override 
    public void onDismiss(DialogInterface dialog) { 
     // start the other activity 
    } 
}); 
関連する問題