2016-10-21 1 views
0

Je peux détecter l'interaction de l'utilisateur dans une activité avec ce code:Comment détecter l'interaction de l'utilisateur sur un dialogue?

@Override 
public void onUserInteraction() { 
    super.onUserInteraction(); 
} 

Mais Android Dialog n'a pas de méthode comme ça. Et je ne pouvais pas trouver le moyen de le gérer.

Comment puis-je faire cela?

+0

Avez-vous essayé si vous obtenez des événements onUserInteraction dans votre activité pendant que la boîte de dialogue est affichée? Si oui, vous pouvez suivre si la boîte de dialogue est affichée et gérer le cas en conséquence. – Alex

+0

Je n'ai pas pu obtenir d'événements dans mon activité. – Burak

Répondre

0

Vous pouvez utiliser AppCompatActivity style comme dialogue avec le style au lieu de dialogue Android régulière

<style name="AlertDialogStyle" parent="Theme.AppCompat.Light.Dialog.Alert"> 
... 
</style> 

Ensuite, vous pouvez utiliser la fonctionnalité de l'activité classe

Vous devez également utiliser suivant 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); 
} 

Pour qu'il se comporte comme une boîte de dialogue, vous devez rechercher manuellement toutes les vues dont vous avez besoin pour attacher des écouteurs à chaque bouton.

Voici quelques ID que vous trouverez peut-être utiles:

@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; 

(annotations Butterknife incluses, si vous ne l'utilisez Butterknife il suffit d'utiliser findViewById avec chaque annotation de @BindView (id))