2016-04-18 7 views
1

Ich habe nur Werkzeugleiste in meinem Fragment erstellt. Ich habe den Aktionsmodus für mehrere Löschen der Listenansicht implementiert.Aber der Aktionsmodus wird über der Symbolleiste (dh) Aktionsleiste geöffnet. Wie das Aktionsmodus über die toolbar.I angezeigt haben <item name="windowActionModeOverlay">true</item> in meinem Thema versucht, aber es hat works.` nichtSo stellen Sie den Aktionsmodus über der Symbolleiste in Android

public class Event_notification extends Fragment implements SwipeRefreshLayout.OnRefreshListener { 

    List<String> myList; 
    private List<FeedItem> feedsList= new ArrayList<FeedItem>(); 
    ListView listView; 
    TextView emptyview; 
    String message; 
    EventNotification_adapter adapter; 
    String userID,userid_share; 
    CheckBox check; 
    ArrayList<String> list = new ArrayList<String>(); 
    String EventStatus,date; 
    Dialog dialog; 
    public static ActionMode mActionMode; 
    ActionBar action; 
    private JSONObject EventJsonObject; 
    protected static final String TAG = "NOTIFICATION"; 
    ProgressWheel pw; 
    ResetPasswordActivity obj = new ResetPasswordActivity(); 
    Constants constants=new Constants(); 

    private SwipeRefreshLayout swipeRefreshLayout; 

    public static final String MY_PREFS_NAME = "MyPrefsFile"; 
    public Event_notification() { 
     // Required empty public constructor 
    } 

    /** 
    * Use this factory method to create a new instance of 
    * this fragment using the provided parameters. 
    * 

    * @return A new instance of fragment Event_notification. 
    */ 
    // TODO: Rename and change types and number of parameters 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
//  getActivity().getWindow().requestFeature(Window.FEATURE_ACTION_MODE_OVERLAY); 
     super.onCreate(savedInstanceState); 
//  getActivity().getActionBar().hide(); 


     SharedPreferences prefs1 = getContext().getSharedPreferences(MY_PREFS_NAME, getContext().MODE_PRIVATE); 
     userID= prefs1.getString("userid", null); 
     System.out.println("userid" + userID); 

//  actionBar.hide(); 
     // setHasOptionsMenu(false); 

    } 


    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
          Bundle savedInstanceState) { 
     // Inflate the layout for this fragment 

     System.out.println("Notification Fragment"); 
     View v=inflater.inflate(R.layout.fragment_event_notification, container, false); 
     //return inflater.inflate(R.layout.row_eventnotification, container, false); 
     FontChangeCrawler fontChanger = new FontChangeCrawler(getContext().getAssets(), "arial.ttf"); 
     fontChanger.replaceFonts((ViewGroup) v); 
     emptyview=(TextView)v.findViewById(R.id.empty_view); 
     listView=(ListView)v.findViewById(R.id.recycler_view); 
     swipeRefreshLayout = (SwipeRefreshLayout) v.findViewById(R.id.swipe_refresh_layout); 
     swipeRefreshLayout.setOnRefreshListener(this); 
     check=(CheckBox)v.findViewById(R.id.check1); 
     pw = (ProgressWheel) v.findViewById(R.id.pw_spinner); 
     obj.styleRandom(pw, getContext()); 
     getnotification(); 

     adapter=new EventNotification_adapter(getContext(),feedsList,Event_notification.this); 

     listView.setAdapter(adapter); 
     adapter.notifyDataSetChanged(); 

     listView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE_MODAL); 

     listView.setMultiChoiceModeListener(new MultiChoiceModeListener() { 

      @Override 

      public boolean onPrepareActionMode(ActionMode mode, Menu menu) { 
        return false; 

      } 
       @Override 

      public void onDestroyActionMode(ActionMode mode) { 

       adapter.removeSelection(); 
           } 
         @Override 

      public boolean onCreateActionMode(ActionMode mode, Menu menu) { 
        // TODO Auto-generated method stub 
       mActionMode = mode; 
      mActionMode.getMenuInflater().inflate(R.menu.multiple_delete, menu); 
        return true; 
       } 

       @Override 
       public boolean onActionItemClicked(final ActionMode mode, 

               final MenuItem item) { 
        // TODO Auto-generated method stub 
        switch (item.getItemId()) { 
         case R.id.selectAll: 
          final int checkedCount = feedsList.size(); 

         // If item is already selected or checked then remove or 
         // unchecked and again select all 
          for (int i = 0; i < checkedCount; i++) { 
           listView.setItemChecked(i, true); 
          // listviewadapter.toggleSelection(i); 
         } 
          mode.setTitle(checkedCount + " Selected"); 
          return true; 

        case R.id.unselect: 
         mode.finish(); 
         return false; 

        case R.id.delete: 

         // Add dialog for confirmation to delete selected item 
         // record. 
         android.support.v7.app.AlertDialog.Builder builder = new android.support.v7.app.AlertDialog.Builder(getContext(), R.style.AppCompatAlertDialogStyle); 
         builder.setMessage("Do you want to delete selected record(s)?"); 
         builder.setNegativeButton("No", new DialogInterface.OnClickListener() { 

           @Override 

          public void onClick(DialogInterface dialog, int which) { 
            // TODO Auto-generated method stub 
          } 

         }); 

         builder.setPositiveButton("Yes", new DialogInterface.OnClickListener() { 

          @Override 

          public void onClick(DialogInterface dialog, int which) { 

           // TODO Auto-generated method stub 
            SparseBooleanArray selected = adapter 
              .getSelectedIds(); 

            for (int i = (selected.size()); i >= 0; i--) { 
             if (selected.valueAt(i)) { 
//          String selecteditem=Integer.parseInt(selected.keyAt(i)); 
// 
             FeedItem movie = feedsList.get(selected.keyAt(i)); 

             list.add(movie.getMessageid()); 

             System.out.println("EVENT ID____"+list); 

             int selecteditem = selected.keyAt(i); 
             // String selecteditem1=Integer.toString(item.getItemId()); 
             int selecteditem1=item.getItemId(); 

             EventDelete(); 
             dialog.dismiss(); 
             // Remove selected items following the ids 
              adapter.remove(selecteditem); 
             System.out.println("FEEDLIST SIZE+++"+feedsList.size()); 
             if(feedsList.size()==0){ 
              emptyview.setVisibility(View.VISIBLE); 
             } 
             else{ 
              emptyview.setVisibility(View.GONE); 
             } 
            } 
           } 
           // Close CAB 
           mode.finish(); 
           selected.clear(); 
          } 

         }); 

         AlertDialog alert = builder.create(); 
         //alert.setIcon(R.drawable.questionicon);// dialog Icon 
         alert.setTitle("Confirmation"); // dialog Title 
         alert.show(); 
         return true; 
        default: 
         mode.finish(); 
         return false; 

       } 


      } 

`

+0

Wo die Toolbar in Ihrem Code ist> –

+0

Dies ist verschachteltes Fragment so die Symbolleiste in Hauptfragment implementiert ist – sri

Antwort

0

dies versuchen.

android.view.ActionMode mMode = toolbar.startActionMode(new Callback() { 

      @Override 
      public boolean onPrepareActionMode(
        ActionMode mode, Menu menu) { 
        return false; 
      } 

      @Override 
      public void onDestroyActionMode(
        ActionMode mode) { 

      } 

      @Override 
      public boolean onCreateActionMode(
        ActionMode mode, Menu menu) { 
        return false; 
      } 

      @Override 
      public boolean onActionItemClicked(
        ActionMode mode, MenuItem item) { 
        return false; 
      } 
}); 

wenn Sie wollen Fininsh Action-Modus

if (mMode != null) { 
     mMode.finish(); 
} 

Und vergessen Sie nicht folgende in Ihrem Haupt-Thema unter hinzufügen styles.xml

<item name="android:windowActionModeOverlay">true</item> 

Sie sind gut zu gehen.

+0

wo ich diese Codierung innerhalb des listView.setMultiChoiceModeListener setzen müssen oder sonst außerhalb – sri

+0

Sie ActionMode von muliple Wahl verwenden .. Oh. okey .. einfach hinzufügen ' true' in Ihrem Haupt-Theme unter 'styles.xml' vergessen Sie den Rest –

+0

Ich habe schon versucht, dass eine, aber es funktioniert nicht – sri

Verwandte Themen