2016-03-31 9 views
1

私はonPostExecute()のAsyncTaskでポップアップウィンドウを作成していますが、これは同じアクティビティでも完全に表示されていますが、ショーとアプリがクラッシュします。ユーザーが現在行っているアクティビティにポップアップウィンドウを表示させたい。アプリケーションのすべてのアクティビティに表示されるポップアップウィンドウ

layoutinflaterは1つのアクティビティのみのベースコンテキストを持っているため、他のアクティビティには表示されません。それを他の活動にもどのように表示できますか?それはそれを示したのアクティビティのコンテキストに装着されているとして、あなたのアプリケーション内のすべての活動全体でポップアップを共有することはできません、

protected void onPostExecute(Integer progress) { 



    View popupView = layoutinflater.inflate(R.layout.popup_window, null); 
    final PopupWindow popupWindow = new PopupWindow(
      popupView, 
      LinearLayout.LayoutParams.WRAP_CONTENT, 
      LinearLayout.LayoutParams.WRAP_CONTENT); 

    ImageView btnDismiss = (ImageView) popupView.findViewById(R.id.imageView3); 
    ImageView btnDismiss2 = (ImageView) popupView.findViewById(R.id.imageView4); 
    ImageView btnDismiss3 = (ImageView) popupView.findViewById(R.id.imageView5); 
    btnDismiss.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      // TODO Auto-generated method stub 
      popupWindow.dismiss(); 
     } 
    }); 

    btnDismiss2.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      // TODO Auto-generated method stub 
      popupWindow.dismiss(); 
     } 
    }); 

    btnDismiss3.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      // TODO Auto-generated method stub 
      // File downloaddirectory = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_MOVIES), "Youtube Videos"); 
      Intent intent = new Intent(Intent.ACTION_GET_CONTENT); 
      Uri uri = Uri.parse(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_MOVIES).getPath() 
        + "/XYZ/"); 
      intent.setData(uri); 
      GlobalDownload.context.startActivity(Intent.createChooser(DownloadScreen.intent, "Open folder")); 

     } 
    }); 

    popupWindow.showAtLocation(popupView, Gravity.CENTER, 0, 0); 



    } 
+0

ポップアップウィンドウは、それを示すアクティビティのUIの一部です。アクティビティが見えなくなると、ポップアップが表示されなくなります。永続化したい場合は、各アクティビティーの新しいポップアップを再作成する必要があります。 –

+0

@DougStevenson:解消後に毎回新しいポップアップが作成されるため、ちらつきが残っています。 **非常に**びっくりするように見えるでしょう。 – Swayam

+0

そうですね、複数の活動を伴わないオプションを考えてみてください。複数の断片のように?または、ビューを切り替えるだけですか? –

答えて

1

私の知る限り:

は、ここに私のポップアップウィンドウコードです。 1つのオプションは、ウィンドウを描画するための許可を得て、サービスを常時実行させることで、ポップアップUIをアクティビティに描画します。しかし、私はそれを本当に示唆しません。

よりクリーンなアプローチは、複数のアクティビティではなく、複数のフラグメントを使用することです。 1つのアクティビティすべてのフラグメントをホストします。アクティビティのコンテキストでポップアップを表示すると、すべてのフラグメントにわたってポップアップを表示できます。

+0

ポップアップウィンドウを遅らせる方法はありますか?私が他の活動をしているなら、それはポップアップしません。それは私がその活動に戻るのを待ってから、それがポップアップする?私が別のアクティビティをしている場合、この方法で、私のアプリはクラッシュしないでしょうか? –

関連する問題