2011-01-27 3 views
0

私のアプリケーションでは、非アクティビティからのアラートダイアログを表示しようとしています。非アクティビティからアラートビルダーを表示

ここで難しいのは、アクティビティではなく一般的なアプリケーションクラスで実行したいということです。

public class AppName extends com.github.droidfu.DroidFuApplication { 
    public static long TIME_CONTENT_UPDATE = 60; //half hour 

    Handler mHandler = new Handler(); 


    @Override 
    public void onCreate() { 
     super.onCreate(); 
     intent = new Intent(this, VSSyncController.class); 
     setupTimer(); 

    } 


    private void setupCatalogTimer() { 
     final Context con = this; 

     //A handler runs on a separate thread 
     mHandler = new Handler(new Handler.Callback() { 

      public boolean handleMessage(Message msg) { 

       showMyAlertDialog(con) 
       mHandler.sendEmptyMessageDelayed(0, TIME_CONTENT_UPDATE); 
       return true; 
      } 
     }); 
    } 
} 

は基本的に私はそこから警告ダイアログを表示したいが、私は、そこにフォアグラウンドでいずれかの活動があるので、私はそこからそれを呼び出すことができるかどうかを把握するための方法を持っている必要があります。

どうすればいいですか?

ありがとうございます!

+0

私はあなたのユースケースが意味をなさないと思います。アプリケーションからダイアログを表示して何を達成しようとしていますか?代わりに通知を使用する必要がありますか? –

+0

私はそのダイアログ(yes/no)を使って回答を与えたいからです。 – dwbrito

答えて

0

私が行ったことは、ユーザーがアクティビティに戻ってダイアログを表示する通知(ダイアログがポップすると思われるとき)を送信することでした。

このように、どのアクティビティが前面にないかを確認するために、この問題を処理しません。

2

それぞれのアクティビティで、onPause()onResume()でこれを追跡してください。あなたにこのデータを提供するものは何も組み込まれていません。

+0

setAppConのようなAppNameクラスのメソッドを設定することをお勧めしますか、各アクティビティonCreate()/ onResume()コンテキストとonPause nullに設定します – dwbrito

+2

@alaxid:IMHO、「良いアイデア」は 'Application'がダイアログを表示しないことです。あなたのコメントに関しては、メモリリークの可能性があるため、静的コンテキストで 'Activity'オブジェクトを置くファンではありません。あなたが書いていることは、安全でなければなりません。 – CommonsWare

+0

できません。基本的には、ユーザーに特定のタスクを許可し、その方法を見つけることができない場合、アプリケーションをバックグラウンド/フォアグラウンドで実行しているかどうかを尋ねたいと思います。私はこの実装を試みましたが、コンテキストでも失敗します。 – dwbrito

関連する問題