Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/211.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何制作一个Android刷新按钮来刷新抽屉中的片段?_Android_Android Fragments - Fatal编程技术网

如何制作一个Android刷新按钮来刷新抽屉中的片段?

如何制作一个Android刷新按钮来刷新抽屉中的片段?,android,android-fragments,Android,Android Fragments,我正在尝试根据用户所在的抽屉刷新片段 这是我的尝试,没有做任何事情,但不会给我一个错误 这是我的密码 public void fragmentRefresh() { // Insert the fragment by replacing any existing fragment FragmentManager fragmentManager = getFragmentManager(); fragmentManager.beginTra

我正在尝试根据用户所在的抽屉刷新片段

这是我的尝试,没有做任何事情,但不会给我一个错误

这是我的密码

public void fragmentRefresh() {
        // Insert the fragment by replacing any existing fragment
        FragmentManager fragmentManager = getFragmentManager();

            fragmentManager.beginTransaction()
                    .replace(R.id.frame_container, fragmentManager.findFragmentByTag("TagForRefresh"))
                    .commit();


    }
以下是抽屉碎片代码:

/**
     * Diplaying fragment view for selected nav drawer list item
     */
    private void displayView(int position) {
        // update the main content by replacing fragments
        Fragment fragment = null;
        switch (position) {
            case 0:
                fragment = new HomeFragment();
                break;
            case 1:
                fragment = new BrowseFragment();
                break;
            case 2:
                fragment = new InviteFragment();
                break;
            case 3:
                fragment = new ProfileFragment();
                break;
            case 4:
                fragment = new SettingsFragment();
                break;
            case 5:
                callConfirmLogout();
                break;


            default:
                break;
        }

        if (fragment != null) {
            FragmentManager fragmentManager = getFragmentManager();
            fragmentManager.beginTransaction()
                    .replace(R.id.frame_container, fragment, "TagForRefresh").commit();

            // update selected item and title, then close the drawer
            mDrawerList.setItemChecked(position, true);
            mDrawerList.setSelection(position);
            setTitle(navMenuTitles[position]);
            mDrawerLayout.closeDrawer(mDrawerList);
        } else {
            // error in creating fragment
            Log.e("MainActivity", "Error in creating fragment");
        }
在选项卡swiper片段类中实现:

public class ViewVotesActivity extends FragmentActivity implements ActionBar.TabListener{


    //Tab options
    private ViewPager viewPager;
    private TabSwipeAdapter mAdapter;
    private ActionBar actionBar;

    // Tab titles
    private String[] tabs = { "Created", "Up", "Down"};
    //for custom menu to add progress bar to refresh
    private MenuItem menuItem;

    //Search view action bar
    private SearchView search_action_bar;

    //getApplicationContext().getString(R.string.created),getApplicationContext().getString(R.string.upvote), getApplicationContext().getString(R.string.downvote)
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_view_votes);


        // Initializing tab
        viewPager = (ViewPager) findViewById(R.id.pager);
        actionBar = getActionBar();
        mAdapter = new TabSwipeAdapter(getSupportFragmentManager(), new UserCreatedFragment(), new UserUpVotesFragment(),new UserDownVotesFragment());

        viewPager.setAdapter(mAdapter);
        actionBar.setHomeButtonEnabled(true);
        actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);

        // Adding Tabs
        for (String tab_name : tabs) {
            actionBar.addTab(actionBar.newTab().setText(tab_name)
                    .setTabListener(this));
        }

        /**
         * on swiping the viewpager make respective tab selected
         * */
        /**
         * on swiping the viewpager make respective tab selected
         * */
        viewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {

            @Override
            public void onPageSelected(int position) {
                // on changing the page
                // make respected tab selected
                actionBar.setSelectedNavigationItem(position);
            }

            @Override
            public void onPageScrolled(int arg0, float arg1, int arg2) {
            }

            @Override
            public void onPageScrollStateChanged(int arg0) {
            }
        });


    }

    @Override
    public void onTabSelected(ActionBar.Tab tab, FragmentTransaction fragmentTransaction) {
        // on tab selected
        // show respected fragment view
        viewPager.setCurrentItem(tab.getPosition());
    }

    @Override
    public void onTabUnselected(ActionBar.Tab tab, FragmentTransaction fragmentTransaction) {

    }

    @Override
    public void onTabReselected(ActionBar.Tab tab, FragmentTransaction fragmentTransaction) {

    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.home, menu);
        setupActions(menu);
        callSearchActionBar(menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar actions click
        switch (item.getItemId()) {
            case R.id.action_refresh:
                menuItem = item;
                menuItem.setActionView(R.layout.refresh_progress_bar);
                //menuItem.expandActionView();
                fragmentRefresh();

                TestTask task = new TestTask();
                task.execute("test");
                return true;
            case R.id.action_discover:
                addNewItem();
                return true;
            case R.id.action_search:
                return true;
            default:
                return super.onOptionsItemSelected(item);
        }
    }

    public void addNewItem() {
        // user redirect to register followup
        Intent createItemIntent = new Intent(ViewVotesActivity.this, CreateItemActivity.class);
        // Closing all the Activities
        createItemIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);

        // Add new Flag to start new Activity
        createItemIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

        // Staring Login Activity
        startActivity(createItemIntent);
    }

    public void fragmentRefresh() {
//        // Insert the fragment by replacing any existing fragment
//        FragmentManager fragmentManager = getFragmentManager();
//
//        fragmentManager.beginTransaction()
//                .replace(R.id.frame_container, fragmentManager.findFragmentByTag("TagForRefresh"))
//                .commit();


    }


    private class TestTask extends AsyncTask<String, Void, String> {

        @Override
        protected String doInBackground(String... params) {
            // Simulate something long running
            try {
                Thread.sleep(2000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            return null;
        }

        @Override
        protected void onPostExecute(String result) {
            menuItem.collapseActionView();
            menuItem.setActionView(null);
        }
    };

    public  void setupActions(Menu menu) {
        MenuItem refreshItem = menu.findItem(R.id.action_refresh);
        MenuItem discoverItem = menu.findItem(R.id.action_discover);

        if (isAlwaysExpanded()) {

        } else {
            refreshItem.setShowAsActionFlags(MenuItem.SHOW_AS_ACTION_IF_ROOM
                    | MenuItem.SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW);

            discoverItem.setShowAsActionFlags(MenuItem.SHOW_AS_ACTION_IF_ROOM
                    | MenuItem.SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW);
        }

    }

    public void callSearchActionBar(Menu menu) {
        //find the menu item and set search view at the same time
        MenuItem searchItem = menu.findItem(R.id.action_search);

        search_action_bar
                = (SearchView)  searchItem.getActionView();

        if (isAlwaysExpanded()) {
            search_action_bar.setIconifiedByDefault(false);
        } else {
            searchItem.setShowAsActionFlags(MenuItem.SHOW_AS_ACTION_IF_ROOM
                    | MenuItem.SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW);
        }

        SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE);
        if (searchManager != null) {
            List<SearchableInfo> searchables = searchManager.getSearchablesInGlobalSearch();

            SearchableInfo info = searchManager.getSearchableInfo(getComponentName());
            for (SearchableInfo inf : searchables) {
                if (inf.getSuggestAuthority() != null
                        && inf.getSuggestAuthority().startsWith("applications")) {
                    info = inf;
                }
            }
            search_action_bar.setSearchableInfo(info);
        }

        search_action_bar.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
            public boolean onQueryTextChange(String newText) {
                Log.e("Query = ", newText);
                return false;
            }

            public boolean onQueryTextSubmit(String query) {
                Log.e("Submit", "Submited " + query);
                // user redirect to register followup
                Intent searchIntent = new Intent(ViewVotesActivity.this, SearchActivity.class);

                searchIntent.putExtra("search", query);

                // Closing all the Activities
                searchIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);

                // Add new Flag to start new Activity
                searchIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

                // Staring Login Activity
                startActivity(searchIntent);
                return false;
            }

            public boolean onClose() {
                Log.e("query close", "query closingggg");
                return false;
            }
        });
    }
    protected boolean isAlwaysExpanded() {
        return false;
    }


}
公共类ViewVoteActivity扩展了FragmentActivity实现ActionBar.TabListener{
//选项卡选项
私人视页机视页机;
私人TabSwipeAdapter mAdapter;
私人ActionBar ActionBar;
//标签标题
私有字符串[]制表符={“已创建”、“向上”、“向下”};
//用于自定义菜单以添加要刷新的进度条
私有菜单项菜单项菜单项;
//搜索视图操作栏
私有搜索视图搜索\操作\栏;
//getApplicationContext().getString(R.string.created)、getApplicationContext().getString(R.string.upvote)、getApplicationContext().getString(R.string.downvote)
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity\u view\u投票);
//初始化选项卡
viewPager=(viewPager)findViewById(R.id.pager);
actionBar=getActionBar();
mAdapter=new TabSwipeAdapter(getSupportFragmentManager(),new UserCreatedFragment(),new UserUpVotesFragment(),new UserDownVotesFragment());
viewPager.setAdapter(mAdapter);
actionBar.setHomeButtonEnabled(真);
actionBar.setNavigationMode(actionBar.NAVIGATION\u MODE\u选项卡);
//添加选项卡
用于(字符串选项卡\名称:选项卡){
actionBar.addTab(actionBar.newTab().setText(选项卡名称)
.setTabListener(本));
}
/**
*滑动viewpager时,选择相应的选项卡
* */
/**
*滑动viewpager时,选择相应的选项卡
* */
viewPager.setOnPageChangeListener(新的viewPager.OnPageChangeListener(){
@凌驾
已选择页面上的公共无效(内部位置){
//关于更改页面
//选择“受尊重”选项卡
actionBar.setSelectedNavigationItem(位置);
}
@凌驾
已滚动页面上的公共void(int arg0、float arg1、int arg2){
}
@凌驾
公共无效onPageScrollStateChanged(int arg0){
}
});
}
@凌驾
已选择的公共事务(ActionBar.Tab选项卡,FragmentTransaction FragmentTransaction){
//在选定的选项卡上
//显示受尊重的片段视图
setCurrentItem(tab.getPosition());
}
@凌驾
已选择公共void ontab(ActionBar.Tab选项卡,FragmentTransaction FragmentTransaction){
}
@凌驾
已重新选择public void ontab(ActionBar.Tab选项卡,FragmentTransaction FragmentTransaction){
}
@凌驾
公共布尔onCreateOptions菜单(菜单){
getMenuInflater().充气(R.menu.home,menu);
设置动作(菜单);
callSearchActionBar(菜单);
返回true;
}
@凌驾
公共布尔值onOptionsItemSelected(菜单项项){
//处理操作栏操作单击
开关(item.getItemId()){
案例R.id.action\u刷新:
menuItem=项目;
menuItem.setActionView(R.layout.refresh\u progress\u bar);
//menuItem.expandActionView();
碎片刷新();
TestTask任务=新建TestTask();
任务。执行(“测试”);
返回true;
案例R.id.action\u发现:
addNewItem();
返回true;
案例R.id.行动搜索:
返回true;
违约:
返回super.onOptionsItemSelected(项目);
}
}
public void addNewItem(){
//用户重定向到注册跟踪
Intent createItemIntent=新意图(ViewVotesActivity.this,CreateItemActivity.class);
//结束所有活动
createItemIntent.addFlags(Intent.FLAG\u ACTIVITY\u CLEAR\u TOP);
//添加新标志以启动新活动
createItemIntent.setFlags(Intent.FLAG\u活动\u新任务);
//启动登录活动
startActivity(createItemIntent);
}
公共无效碎片刷新(){
////通过替换任何现有片段来插入片段
//FragmentManager FragmentManager=getFragmentManager();
//
//fragmentManager.beginTransaction()
//.replace(R.id.frame_容器,fragmentManager.findFragmentByTag(“TagForRefresh”))
//.commit();
}
私有类TestTask扩展了AsyncTask{
@凌驾
受保护的字符串doInBackground(字符串…参数){
//模拟长时间运行的东西
试一试{
《睡眠》(2000年);
}捕捉(中断异常e){
e、 printStackTrace();
}
返回null;
}
@凌驾
受保护的void onPostExecute(字符串结果){
menuItem.collapseActionView();
menuItem.setActionView(空);
}
};
公共无效设置操作(菜单){
MenuItem refreshItem=menu.findItem(R.id.action\u refresh);
MenuItem discoverItem=menu.findItem(R.id.action\u discover);
如果(isAlwaysExpanded()){
}否则{
refreshItem.setShowAsActionFlags(MenuItem.SHOW_AS_ACTION_如果房间
|菜单项。显示为(操作、折叠、操作、视图);
discoverItem.setShowAsActionFlags(MenuItem.SHOW_AS_ACTION_IF_房间
|菜单项。显示为(操作、折叠、操作、视图);
}
}
公共无效调用搜索操作栏(菜单){
//查找菜单项并同时设置搜索视图
MenuItem searchItem=menu.findItem(R.id.action\u search);
搜索\u操作\u栏
public interface Refreshable{
  void onShouldRefresh();
}
public class DrawerController {
    private List<Refreshable> mListeners = new ArrayList<Refreshable>();
    public void addRefreshListener(E listener) {
        if (listener != null && !mListeners.contains(listener)) {
            mListeners.add(listener);
        }
    }
    public void removeRefreshListener(E listener) {
        if (listener != null) {
            mListeners.remove(listener);
        }
    }
}
public class HomeFragment extends Fragment implements Refreshable {
    // your fragment code
    public void onShouldRefresh(){
         // do the refresh
    }
    @Override
    public void onResume() {
        super.onResume();
        yourDrawerController.addRefreshListener(this);
    }

    @Override
    public void onPause() {
        super.onPause();
        yourDrawerController.removeRefreshListener(this);
    }
}
public void refresh(){
    for (Refreshable listener : mListeners) {
        if (listener != null) {
            listener.onShouldRefresh();
        }
    }     
}