2016-08-30 13 views
1

このライブラリがマテリアルデザインダイアログを実装していますが、ロジックがどこかで私を打ち負かしています。私は、項目が選択された後でDialogを閉じたいと思う。Android:アイテムが選択されたときにダイアログを閉じる方法

アダプタは次のように作成されます。

MaterialSimpleListAdapter adapter = new MaterialSimpleListAdapter(new MaterialSimpleListAdapter.Callback() { 
    @Override 
    public void onMaterialListItemSelected(int i, MaterialSimpleListItem item) { 
     long id  = item.getId(); 
     switch ((int) id){ 
      case 10 : Email(); 
     } 
     ////I have to dismiss the dialog here, but its created below. 
    } 
}); 

追加項目

adapter.add(new MaterialSimpleListItem.Builder(this) 
       .content("Send by Email") 
       .icon(R.mipmap.ic_mail_gray_48dp) 
       .backgroundColor(Color.WHITE) 
       .iconPaddingDp(8) 
       .id(10) 
       .build()); 

をし、ダイアログがアダプタから作成されます。

MaterialDialog dialog = new MaterialDialog.Builder(this) 
       .adapter(adapter, null) 
       .autoDismiss(true) 
       .show(); 

問題は、それがアダプタに依存するためMaterialDialogがまだonMaterialListItemSelectedに作成されていないのですか?どうすればこの問題を解決できますか?

+0

onMaterialListItemSelected()メソッドに入れることができます。 –

+0

'onMaterialListItemSelected()'メソッドを表示してください。 – BRG

+0

dialog.cancel() –

答えて

1

私は次の変更を示唆している:

//declare as global the dialog variable 
private MaterialDialog dialog; 

final MaterialSimpleListAdapter adapter = new MaterialSimpleListAdapter(new MaterialSimpleListAdapter.Callback() { 
      @Override 
      public void onMaterialListItemSelected(int index, MaterialSimpleListItem item) { 
       dialog.dismiss(); 
      } 
     }); 

     //remove the autoDismiss(true) option, better use the Activity 
     //context 
     dialog = new MaterialDialog.Builder(MyActivity.this) 
       .adapter(adapter, null) 
       .show(); 

はそれが役に立てば幸い!

+0

これはやってみましたが、最終的に必要なローカル変数としてダイアログを配置しました。私はJava Scopingを学ぶ必要があると思います。 – Relm

+0

うれしいです! – BRG

1

ダイアログが表示されたら、あなたはそれを却下する必要がある場合、あなたは単に

dialog.dismiss(); 
+0

問題はダイアログを閉じることではなく、正しいコンテキストで閉じることです。質問を読んでください。 – Relm

0
dialog.dismiss() 

ことによってそれを消すことができます。

+0

私はあなたがその問題を理解したとは思わない。 – Relm

関連する問題