#android #dialog #user-interaction
#Android #диалоговое #взаимодействие с пользователем
Вопрос:
Я могу обнаружить взаимодействие с пользователем в activity с помощью этого кода:
@Override
public void onUserInteraction() {
super.onUserInteraction();
}
Но Android Dialog не имеет подобного метода. И я не смог найти способ справиться с этим.
Как я могу это сделать?
Комментарии:
1. Вы пробовали, получаете ли вы события onUserInteraction в своей активности во время отображения диалогового окна? Если да, вы можете отслеживать, отображается ли диалоговое окно, и соответствующим образом обрабатывать обращение.
2. Я не смог получить события в своей активности.
3. Есть ли у вас какое-либо решение для этого??
4. У @Burak есть какое-либо решение для этого?
Ответ №1:
Вы можете использовать AppCompatActivity, оформленный как dialog with style, вместо обычного диалогового окна Android
<style name="AlertDialogStyle" parent="Theme.AppCompat.Light.Dialog.Alert">
...
</style>
Тогда вы могли бы использовать функциональность класса Activity
Вы также должны использовать следующий onCreate:
@Override
protected void onCreate(Bundle savedInstanceState) {
requestWindowFeature(Window.FEATURE_NO_TITLE);
super.onCreate(savedInstanceState);
setContentView(android.support.v7.appcompat.R.layout.abc_alert_dialog_material);
}
Чтобы заставить его вести себя как диалоговое окно, вам вручную нужно найти все представления, необходимые для подключения прослушивателей кликов к каждой кнопке.
Вот несколько идентификаторов, которые могут оказаться полезными:
@BindView(android.support.v7.appcompat.R.id.topPanel)
protected ViewGroup mTopPanel;
@BindView(android.support.v7.appcompat.R.id.contentPanel)
protected ViewGroup mContentPanel;
@BindView(android.support.v7.appcompat.R.id.customPanel)
protected ViewGroup mCustomPanel;
@BindView(android.support.v7.appcompat.R.id.custom)
protected ViewGroup mCustomViewContainer;
@BindView(android.support.v7.appcompat.R.id.textSpacerNoButtons)
protected View mTextSpacer;
@BindView(android.support.v7.appcompat.R.id.buttonPanel)
protected ButtonBarLayout mButtonPanel;
@BindView(android.R.id.message)
protected TextView mMessage;
@BindView(android.R.id.button1)
protected Button mPositiveButton;
@BindView(android.R.id.button2)
protected Button mNegativeButton;
@BindView(android.R.id.button3)
protected Button mNeutralButton;
(Включены аннотации Butterknife, если вы не используете Butterknife, просто используйте findViewById для каждой аннотации из @BindView (id))