2017-04-11 11 views
0

활동 A에서 표시되는 팝업 창입니다. 사용자가 활동 A에서 버튼을 누르고 활동 B가 맨 위에옵니다. 그러나 문제는 팝업도 활동 B. 뒤에가는 것입니다활동이 백그라운드로 돌아가고 새로운 활동이 돌아 오더라도 Android 팝업 창을 항상 위에 두십시오.

나는 활동이 다시 땅에

LayoutInflater layoutInflater = (LayoutInflater)getSystemService(LAYOUT_INFLATER_SERVICE); 

LeadOffPopView = layoutInflater.inflate(
     R.layout.leadoffdetect, null); 
LeadOffPopWindow = new PopupWindow(
     LeadOffPopView, LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); 
final TextView bLATxtVw = (TextView) (LeadOffPopView) 
     .findViewById(R.id.LATxtVw); 
final TextView bRATextView = (TextView) (LeadOffPopView) 
     .findViewById(R.id.RATxtVw); 
final TextView bLLTextView = (TextView) (LeadOffPopView) 
     .findViewById(R.id.LLTxtVw); 
final TextView bRLTextView = (TextView) (LeadOffPopView) 
     .findViewById(R.id.RLTxtVw); 
final TextView bV1TextView = (TextView) (LeadOffPopView) 
     .findViewById(R.id.V1TxtVw); 
final TextView bV2TextView = (TextView) (LeadOffPopView) 
     .findViewById(R.id.V2TxtVw); 
final TextView bV3TextView = (TextView) (LeadOffPopView) 
     .findViewById(R.id.V3TxtVw); 
final TextView bV4TextView = (TextView) (LeadOffPopView) 
     .findViewById(R.id.V4TxtVw); 
final TextView bV5TextView = (TextView) (LeadOffPopView) 
     .findViewById(R.id.V5TxtVw); 
final TextView bV6TextView = (TextView) (LeadOffPopView) 
     .findViewById(R.id.V6TxtVw); 


final Handler handler = new Handler(); 
handler.postDelayed(new Runnable() { 
    @Override 
    public void run() { 
     if (bLAOff) { 
      bLATxtVw.setVisibility(View.VISIBLE); 
     } else 
      bRATextView 
      .setVisibility(View.INVISIBLE); 

     if (bRAOff) { 
      bRATextView 
      .setVisibility(View.VISIBLE); 
     } else 
      bRATextView 
      .setVisibility(View.INVISIBLE); 
     if (bLLOff) { 
      bLLTextView 
      .setVisibility(View.VISIBLE); 
     } else 
      bLLTextView 
      .setVisibility(View.INVISIBLE); 

     if (bRLOff) { 
      bRLTextView 
      .setVisibility(View.VISIBLE); 
     } else 
      bRLTextView 
      .setVisibility(View.INVISIBLE); 

     if (bV1Off) { 
      if(!MainClass.bLANDSCAPEENABLED) 
      bV1TextView 
      .setVisibility(View.VISIBLE); 
     } else 
      bV1TextView 
      .setVisibility(View.INVISIBLE); 

     if (bV2Off) { 
      if(!MainClass.bLANDSCAPEENABLED) 
      bV2TextView 
      .setVisibility(View.VISIBLE); 
     } else 
      bV2TextView 
      .setVisibility(View.INVISIBLE); 

     if (bV3Off) { 
      if(!MainClass.bLANDSCAPEENABLED) 
      bV3TextView 
      .setVisibility(View.VISIBLE); 
     } else 
      bV3TextView 
      .setVisibility(View.INVISIBLE); 

     if (bV4Off) { 
      if(!MainClass.bLANDSCAPEENABLED) 
      bV4TextView 
      .setVisibility(View.VISIBLE); 
     } else 
      bV4TextView 
      .setVisibility(View.INVISIBLE); 

     if (bV5Off) { 
      if(!MainClass.bLANDSCAPEENABLED) 
      bV5TextView 
      .setVisibility(View.VISIBLE); 
     } else 
      bV5TextView 
      .setVisibility(View.INVISIBLE); 

     if (bV6Off) { 
      if(!MainClass.bLANDSCAPEENABLED) 
      bV6TextView 
      .setVisibility(View.VISIBLE); 
     } else 
      bV6TextView 
      .setVisibility(View.INVISIBLE); 

     handler.postDelayed(this, 500); 
    } 
}, 250); 

LeadOffPopWindow.showAtLocation(
     LeadOffPopView, 
     Gravity.CENTER_HORIZONTAL | Gravity.TOP,20 , 
     300); 

답변

0

PopUpWindow/대화가 당신의 활동과 연결된 창 관리자 컨텍스트를 간다하더라도 그렇게 할 때, 항상 맨 위에 것으로 나타 원하는 이제까지 당신의 활동이 백그라운드에서 진행될 것이고, PopUpWindow/Dialog도 숨어있을 것입니다.

이를 그러므로, 당신은 코드 아래 사용하여 시스템 대화 상자를 만들 수 있습니다 시스템 경고 PopupWindow/대화 상자를 사용하십시오

AlertDialog newDialog = new AlertDialog.Builder(context) 
        .setMessage(text) 
        .setPositiveButton(R.string.ok, null) 
        .setCancelable(true) 
        .create(); 
newDialog.getWindow().setType(
        WindowManager.LayoutParams.TYPE_SYSTEM_DIALOG); 
newDialog.getWindow().addFlags(
        WindowManager.LayoutParams.FLAG_DIM_BEHIND); 
newDialog.show();