2016-03-31 27 views
1

AsyncTask'da bir popup penceresi yaratıyorum onPostExecute(). Aynı etkinlikte olduğum zaman mükemmel gösteriyor, fakat diğer etkinlikte olduğum zaman t göster ve uygulama çöküyor. Kullanıcının şu anda hangi faaliyette bulunduğunu görüntülemek için açılır pencereyi yapmak istiyorum.açılır pencere

Mizanpaj düzenleyicisi tek bir etkinliğin temel yapısına sahiptir, bu nedenle diğer etkinliklerde gösterilmiyor. Diğer faaliyetlerde de nasıl gösterebilirim. bunu gösteriyor Faaliyet kapsamında takılır gibi, uygulamanızda tüm Faaliyetleri genelinde bir Popup paylaşmak mümkün değildir,

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

Açılan pencereler, bunu gösteren etkinlik için UI'nin bir parçasıdır. Etkinlik görünmez hale geldiğinde, açılır pencere görünmeyecek. Devam etmesini istiyorsanız, her etkinlik için yeni bir açılır pencere oluşturmanız gerekir. –

+0

@DougStevenson: İşten atıldıktan sonra her defasında yeni bir açılır pencere oluşturulacağından hala titreme olacak. Görünüşte ** çok ** jarring. – Swayam

+0

Doğru, belki de birden fazla aktiviteyi içermeyen bir seçenek düşünün mü? Birden fazla fragman gibi mi? Ya da sadece görünümler arasında geçiş mi yapıyorsunuz? –

cevap

1

AFAIK:

İşte benim açılır pencere kodudur. Bir seçenek pencerede çizim yapmak ve sürekli olarak çalışan bir hizmete sahip olmaktır; bu, popup UI'yi etkinliklerinizin üzerine çeker. Ama bunu gerçekten önermeyeceğim.

Bir temizlikçi yaklaşım birden Fragments yerine birden Etkinlikler kullanmak olacaktır. Tüm Fragments'ı barındıran tek bir Etkinliktek bir Etkinliğe sahip olun. Popup'u Etkinlik bağlamıyla görüntüleyin ve tüm Fragments'larınıza gösterebilirsiniz.

+0

Açılır pencereyi geciktirmenin bir yolu var mı? eğer diğer aktivitede olursam, o açılır. Sadece o aktiviteye geri dönmeyi bekler ve sonra ortaya çıkar? Bu şekilde, başka bir etkinlikte olursam uygulamanız çökmez mi? –