2015-01-17 4 views
0

나는이 문제를 dialog.show()에 직면했습니다. Google 검색을 완료하고 아무 것도 수정하지 않으려 고 노력했습니다.활동이 창문을 유출했습니다.

public void openCameraOrGallery(){ 

    final Dialog dialog = new Dialog(LoginActivity.this); 
    dialog.requestWindowFeature(Window.FEATURE_NO_TITLE); 
    dialog.setContentView(R.layout.choosecamera); 
    dialog.getWindow().setLayout(
      WindowManager.LayoutParams.MATCH_PARENT, 
      WindowManager.LayoutParams.WRAP_CONTENT); 

    txtGalleryPhoto = (TextView) dialog 
      .findViewById(R.id.txt_gallery_photo); 
    txtCamera = (TextView) dialog.findViewById(R.id.txt_camera); 
    btnClose = (ImageButton) dialog.findViewById(R.id.btn_close); 
    btnClose.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      dialog.dismiss(); 
     } 
    }); 

    txtGalleryPhoto.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      Intent i = new Intent(
        Intent.ACTION_PICK, 
        android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI); 

      startActivityForResult(i, RESULT_LOAD_IMAGE); 
      //dialog.dismiss(); 
     } 
    }); 
    txtCamera.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE); 
      startActivityForResult(cameraIntent, CAMERA_REQUEST); 
      //dialog.dismiss(); 

     } 
    }); 

    dialog.show(); 

} 
+0

'액티비티가 창 안드로이드를 유출했습니다'오류가 발생하면 오류가 발생합니까? –

답변

1

분명히 Leaked Window Exception이 코드에 포함됩니다.

대화를 표시하면서 활동을 변경하면 안됩니다. (컨텍스트가 변경 될 예정이므로).

따라서 현재 컨텍스트를 계속 확인해야하며 현재 컨텍스트에서 변경 사항이있는 경우 대화 상자를 닫아야합니다. 귀하의 경우

업데이트

일반 대화가 자동으로 cancelled.Here는 로그인 체크를 달성하기 위해 까다로운 방법입니다 수있는 새로운 활동을 시작하기 직전에 대화를 닫습니다.

alert.setOnShowListener(new DialogInterface.OnShowListener() { 
     @Override 
     public void onShow(DialogInterface dialog) { 
      Button button = alert.getButton(AlertDialog.BUTTON_POSITIVE); 
      button.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View view) { 

        // Code to check the login credentials. 
        if(everythingIsOK) 
        { 
        dialogue.dismiss(); 
       } 
       else 
       { 
        // Acknowledge the user 
        } 

       } 
      }); 
     } 
    }); 
+0

멋진 동생 ... 작동 ... :) –

+1

@karthikkolanji는 대답을 수락 해 주시기 바랍니다 –

+0

형제 ... 나는 사용자가 성공적으로 로그인 할 때 활동을 끝내고 대화 상자를 시작하고 싶습니다. 어떻게해야합니까? –

관련 문제