2016-06-29 8 views
1

Ich versuche, BottomSheet für meine Anwendung zu implementieren. Ich lerne Android. Ich habe es wie in der Bibliothek Seite here angegebenen Anweisung implementiert. Ich habe Java-Code wie unten verwendet.Implementieren Sie BottomSheet in Anwendung

findViewById(R.id.butShare).setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       new BottomSheet.Builder(QuoteViewActivity.this) 
       .setSheet(R.menu.grid_sheet) 
       .grid() 
       .setTitle("Lets Some Fun") 
       .setListener(QuoteViewActivity.this) 
       .show(); 
      } 
     }); 

aber ich bin immer Fehler wie

The method setListener(BottomSheetListener) in the type BottomSheet.Builder is not applicable for the arguments (QuoteViewActivity) 

Ich habe erstellt Menü xml grid_sheet in Menü-Ordner als auch genannt. Wie kann ich das Menü arbeiten lassen?

+0

Welches ist die verwendete Bibliothek? – sJy

+0

Hallo! @sJy Ich habe den Link in Frage gestellt. Danke –

Antwort

1

Der Fehler mit setListener ist haben (QuoteViewActivity.this). SetListener() erwartet einen BottomSheetListener und keinen Aktivitätskontext. Versuchen Sie setListener (neue BottomSheetListener()) & überschreiben Sie die Schnittstellenmethoden wie unten angegeben.

new BottomSheet.Builder(MainActivity.this) 
        .setSheet(R.menu.menu) 
        .grid() 
        .setTitle("Lets Some Fun") 
        .setListener(new BottomSheetListener() { 
         @Override 
         public void onSheetShown(@NonNull BottomSheet bottomSheet) { 

         } 

         @Override 
         public void onSheetItemSelected(@NonNull BottomSheet bottomSheet, MenuItem menuItem) { 
           if(menuItem.getItemId() == R.id.share) { 
           Toast.makeText(MainActivity.this, "Share" , Toast.LENGTH_LONG).show(); 
          } 
         } 

         @Override 
         public void onSheetDismissed(@NonNull BottomSheet bottomSheet, int i) { 

         } 
        }) 
        .show(); 
+0

Hallo! @sJy, es hat mein Problem von .setListener gelöst. Ich habe ein Menü in grid_sheet.xml im Menüordner erstellt. Wenn mein Menü Facebook ist als Wie kann ich es anklickbar machen? Danke –

+0

Nun, das ist eine andere Frage. Die Elemente im Menü sind bereits anklickbar. Sie können den Menüeintrag von BottomSheet in onSheetItemSelected() abfangen. – sJy

+0

Hallo! Es tut mir leid, das ist eine andere Frage, aber wenn ich ein Menü mit dem Namen facebook habe und auf Facebook klicken möchte, wie "This is facebook", was soll ich tun? Ich bin verwirrt und wieder Entschuldigung für Frage durch Frage –

0

In new BottomSheet.Builder(QuoteViewActivity.this) übergeben Sie Ihre Aktivität Kontext in onCreate Methode gespeichert oder in Fragment in onAttach(Context mContext) Methode gespeichert.

Hoffe, das hilft.

+0

Hallo! @Er. Kaushik Kajavadara, Können Sie bitte etwas mehr erklären? Danke –

0

Das Problem ist hier

.setListener(QuoteViewActivity.this) 

Sie setListener auf, dass ähnliche

.setListener(this) 
+0

Hallo! @Ironman, ich bekomme den gleichen Fehler wie "Die Methode setListener (BottomSheetListener) im Typ BottomSheet.Builder ist nicht anwendbar für die Argumente (neue View.OnClickListener() {})" –

+0

@RajubhaiRathod entfernen '.grid() 'in Code. – Ironman

+0

@RajubhaiRathod poste hier deinen vollständigen Aktivitätscode. – Ironman