【问题标题】:SearchView in ActionBar with more fragment on androidActionBar 中的 SearchView,在 android 上有更多片段
【发布时间】:2018-01-09 04:35:32
【问题描述】:

我需要在 ActionBar 句柄中添加 SearchBar 以及更多的片段,例如 whatsApp 当在选项卡聊天中搜索获取数据时,当在选项卡状态中搜索获取另一个数据时 这是怎么做的?这是我的代码有 3 个标签我需要每个标签都有 SearchView

Fragments 上的这个 Activity

  public class ActivityForIncludeFragments extends AppCompatActivity{
@Override
  protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);

    setContentView(R.layout.activity_for_include_fragments);

    ViewPager viewPager = (ViewPager)findViewById(R.id.viewPager);

    CategoryAdapter adapter = new CategoryAdapter(this,getSupportFragmentManager());
    viewPager.setAdapter(adapter);

    TabLayout tabLayout = (TabLayout)findViewById(R.id.tabLayout);
    tabLayout.setupWithViewPager(viewPager);
    invalidateOptionsMenu();


}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.menu_main,menu);

    return true;
}

@Override
public boolean onPrepareOptionsMenu(Menu menu) {

    MenuItem menuItemAddData = menu.findItem(R.id.add_data);
    MenuItem menuItemActionSearch = menu.findItem(R.id.action_search);

    menuItemAddData.setVisible(false);
    menuItemActionSearch.setVisible(false);

    return super.onPrepareOptionsMenu(menu);



}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    int id = item.getItemId();
    switch (id){
        case R.id.add_stocking_warehouse:
            Intent intent = new Intent(ActivityForIncludeFragments.this,StockingWarehouse.class);
            startActivity(intent);
            break;
        case R.id.add_reportes:
            Intent intentReport = new Intent(ActivityForIncludeFragments.this,TableDaliyMovmentes.class);
            startActivity(intentReport);
            break;
            }
    return super.onOptionsItemSelected(item);

}
 }

这个片段里面有数据

   public class AddPremissionFragment extends Fragment implements   
     LoaderManager.LoaderCallbacks<ArrayList<ItemsStore>>
     ,SearchView.OnQueryTextListener {
     public AddPremissionFragment() {
    // Required empty public constructor
}
public static final String ID_PERMISSION = "id";
public static final String NAME_PERMISION = "namePErmission";
public static final String NOTES_PERMISSION = "notes";
public static final String DIALOG_PERMISSION = "dialogPermission";

FloatingActionButton fab_add_permission;
ListView mListView;
public static  AdapterAddPermission adapterAddPermission;
TaskDbHelper dbHelper;
ArrayList<ItemsStore> itemsPermissions = new ArrayList<ItemsStore>();
private ProgressBar progressBarPermission;
//Identifier for the category dataloader;
public static final int PERMISSION_LOADER = 2;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

}

View view;

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    // Inflate the layout for this fragment
    view = inflater.inflate(R.layout.fragment_add_premission, container, false);
    TextView namePremission = (TextView)view.findViewById(R.id.ETTypeStore);

    dbHelper = new TaskDbHelper(getActivity());
    mListView = (ListView) view.findViewById(R.id.listViewAddPermission);
    progressBarPermission =(ProgressBar)view.findViewById(R.id.progressBarPermission);

    adapterAddPermission = new AdapterAddPermission(getContext(), itemsPermissions);
    View emptyView = view.findViewById(R.id.empty_view_permission);
    mListView.setEmptyView(emptyView);
    mListView.setAdapter(adapterAddPermission);

    mListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            //   Toast.makeText(getContext(), "Click :"+ position, Toast.LENGTH_SHORT).show();
            ItemsStore itemSPermision = itemsPermissions.get(position);
            Bundle bundle = new Bundle();
            bundle.putInt(ID_PERMISSION, itemSPermision.getId());
            bundle.putString(NAME_PERMISION, itemSPermision.getNamePermission());
            bundle.putString(NOTES_PERMISSION, itemSPermision.getNotes());
            // startActivity(intent);
            //  long id = cursor.getLong(cursor.getColumnIndex(TaskContract.TaskEntry._ID));
            EditPermissionFragment f = new EditPermissionFragment();
            f.setArguments(bundle);
            f.show(getFragmentManager(),DIALOG_PERMISSION);}});
    //    namePremission.setText("Name Permission");
    fab_add_permission = (FloatingActionButton)view.findViewById(R.id.fab_add_permission);
    fab_add_permission.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            new EditPermissionFragment().show(getFragmentManager(),DIALOG_PERMISSION);



        }
    });
    return view;
}
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
    super.onActivityCreated(savedInstanceState);
    //Kick off the loader
    getActivity().getSupportLoaderManager().initLoader(PERMISSION_LOADER, null, this);
}

@Override
public Loader<ArrayList<ItemsStore>> onCreateLoader(int id, Bundle args) {
    return new LoaderPErmission(getContext().getApplicationContext(),itemsPermissions,dbHelper);
}

@Override
public void onLoadFinished(Loader<ArrayList<ItemsStore>> loader, ArrayList<ItemsStore> data) {
    progressBarPermission.setVisibility(View.GONE);
    mListView.setVisibility(View.VISIBLE);
    adapterAddPermission.swapData(data);
}

@Override
public void onLoaderReset(Loader<ArrayList<ItemsStore>> loader) {
    adapterAddPermission.swapData(Collections.<ItemsStore>emptyList());

}

@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {

    // Inflate the menu; this adds items to the action bar if it is present.
    getActivity().getMenuInflater().inflate(R.menu.menu_main, menu);
    MenuItem menuItem = menu.findItem(R.id.action_search);

    SearchView searchView = (SearchView) MenuItemCompat.getActionView(menuItem);
    searchView.setOnQueryTextListener(this);
    super.onCreateContextMenu(menu, v, menuInfo);
}

@Override
public boolean onQueryTextSubmit(String query) {
    return false;
}

@Override
public boolean onQueryTextChange(String newText) {
    itemsPermissions = dbHelper.getAllItemsPermissionBySearch(newText);
    if (itemsPermissions !=null){
        adapterAddPermission.setFilter(itemsPermissions);
        //  getSupportLoaderManager().restartLoader(Daily_LOADER,null,this);

    }
    return false;
}
  }

【问题讨论】:

    标签: android android-actionbar fragment searchview whatsapp


    【解决方案1】:

    请使用此检查哪个片段可见

     Fragment fragment = getActivity().getSupportFragmentManager().findFragmentById(R.id.fragment_container);
    
      if (fragment != null && fragment.isVisible()) {
          if (fragment instanceof ChatFragment) {
             ....      
            } 
          else { }
      }
    

    【讨论】:

      猜你喜欢
      • 2016-03-12
      • 2015-10-12
      • 1970-01-01
      • 1970-01-01
      • 2020-07-15
      • 2015-12-22
      • 1970-01-01
      • 1970-01-01
      • 2015-10-10
      相关资源
      最近更新 更多