Ссылка в окне AlertDialog утечки? - PullRequest
0 голосов
/ 20 августа 2011

Я создал связываемый текст в диалоговом окне предупреждения и сделал TextView активным, например, так:

final SpannableString noRecords = new SpannableString("Sorry, no records could be found, please try again, or contact us at 867-5309");
Linkify.addLinks(noRecords);

AlertDialog.Builder builder = new AlertDialog.Builder(this);
    builder.setTitle("No Records Found")
    .setMessage(noRecords)
    .setCancelable(true)
    .setPositiveButton("Ok", new DialogInterface.OnClickListener() {
        public void onClick(DialogInterface dialog, int id) {
            dialog.cancel();
        }
    });

AlertDialog alert = builder.create();
alert.show();

((TextView)alert.findViewById(android.R.id.message)).setMovementMethod(LinkMovementMethod.getInstance());

Это работает, однако, когда он щелкает, выдает ошибку в logcat:

08-19 19: 40: 55.753: ОШИБКА / WindowManager (5886): активность com.blah.MainActivity просочилась в окно com.android.internal.policy.impl.PhoneWindow$DecorView@405d7010, которое было первоначально добавленоздесь 08-19 19: 40: 55.753: ОШИБКА / WindowManager (5886): android.view.WindowLeaked: действие com.blah.MainActivity утекло окно com.android.internal.policy.impl.PhoneWindow$DecorView@405d7010, которое было изначальнодобавлено здесь

Я думаю, это связано с тем, что предупреждение не закрывается до нажатия на ссылку.Есть ли способ обойти это?Я бы предпочел не выбрасывать ошибки.

1 Ответ

1 голос
/ 20 августа 2011

Если вы хотите удалить диалоговое окно до уничтожения действия, вы можете переопределить событие onDestroy ()

@Override
public void onDestroy(){
    //Your dialog disposal code here

    super.onDestroy(); //Make sure you include this at the end.
}

Надеюсь, что это поможет

...