Android的从其父活动刷新片段列表 [英] Android refresh a fragment list from its parent activity

查看:156
本文介绍了Android的从其父活动刷新片段列表的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个包含3个菜单按钮的操作栏在其主要活动。

然后我有具有榜单主要活动中的一个片段。

我希望能够刷新列表中的片段从主要活动,在菜单中的一个按钮被点击,或preferably只是删除列表中的所有行。

任何帮助是AP preciated。

感谢。

 公共类收藏扩展SherlockFragmentActivity {    动作条动作条;    公共无效的onCreate(捆绑savedInstanceState){
        super.onCreate(savedInstanceState);
        的setContentView(R.layout.favourite);        动作条= getSupportActionBar();        actionBar.setDisplayShowTitleEnabled(假);        。BitmapDrawable BG =(BitmapDrawable)getResources()getDrawable(R.drawable.actionbar_bg);
        bg.setTileModeX(TileMode.REPEAT);
        getSupportActionBar()setBackgroundDrawable(BG)。        getSupportActionBar()的setIcon(R.drawable.favourite_title)。        actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
        ActionBar.Tab tabAll = actionBar.newTab();
        ActionBar.Tab tabfavs = actionBar.newTab();
        ActionBar.Tab tabhist = actionBar.newTab();
        tabAll.setText(全);
        tabfavs.setText(的收藏);
        tabhist.setText(历史);
        tabAll.setTabListener(新MyTabListener());
        tabfavs.setTabListener(新MyTabListener());
        tabhist.setTabListener(新MyTabListener());
        actionBar.addTab(tabAll);
        actionBar.addTab(tabfavs);
        actionBar.addTab(tabhist);
        尝试{        }
        赶上(例外五)
        {
        }
    }
    @覆盖
    公共布尔onCreateOptionsMenu(菜单菜单){        MenuInflater吹气= getSupportMenuInflater();
        inflater.inflate(R.menu.actionbar_itemlist_favourite,菜单);        返回true;
    }    @覆盖
    公共布尔onOptionsItemSelected(菜单项项){
        开关(item.getItemId()){
                案例R.id.history:
                    打破;
                案例R.id.favourite:
                    意图favAct =新意图(这一点,Favourite.class);
                    startActivity(favAct);
                    打破;
                案例R.id.delete:
                    ///我希望能够刷新FRAGMENTLIST从这里
                }
                返回true;
    }  }类MyTabListener实现ActionBar.TabListener {    公共无效onTabSelected(标签选项卡,FragmentTransaction英尺){
        如果(tab.getPosition()== 0)
        {
            FavouriteAllWords FRAG =新FavouriteAllWords();
            ft.replace(android.R.id.content,FRAG);        }
        否则如果(tab.getPosition()== 1)
        {
            FavouriteFavWords FRAG =新FavouriteFavWords();
            ft.replace(android.R.id.content,FRAG);        }
        否则如果(tab.getPosition()== 2)
        {
            FavouriteHistWords FRAG =新FavouriteHistWords();
            ft.replace(android.R.id.content,FRAG);
        }
    }    公共无效onTabUnselected(标签选项卡,FragmentTransaction英尺){
        // TODO自动生成方法存根    }    公共无效onTabReselected(标签选项卡,FragmentTransaction英尺){
        // TODO自动生成方法存根    }}

////////////////////我的名单片段CLASS

 公共类FavouriteAllWords扩展ListFragment {    ArrayAdapter<串GT;适配器;    清单<串GT; stringOfFavWords;    公共无效的onCreate(捆绑savedInstanceState){
        super.onCreate(savedInstanceState);    }    @覆盖
    公共查看onCreateView(LayoutInflater吹气,ViewGroup中组,包保存)
    {
        适配器=新ArrayAdapter<串GT;(
                inflater.getContext(),R.layout.row,stringOfFavWords);
                setListAdapter(适配器);        返回super.onCreateView(打气筒,群,保存);
    }    @覆盖
    公共无效onActivityCreated(捆绑savedInstanceState)
    {
        super.onActivityCreated(savedInstanceState);
    }}


解决方案

您可以轻松地做到这一点使用接口

MainActivity.java

 公共类MainActivity延伸活动{    公共FragmentRefreshListener getFragmentRefreshListener(){
        返回fragmentRefreshListener;
    }    公共无效setFragmentRefreshListener(FragmentRefreshListener fragmentRefreshListener){
        this.fragmentRefreshListener = fragmentRefreshListener;
    }    私人FragmentRefreshListener fragmentRefreshListener;    @覆盖
    公共无效的onCreate(捆绑savedInstanceState){        super.onCreate(savedInstanceState);
        的setContentView(R.layout.activity_main);
        按钮B =(按钮)findViewById(R.id.btnRefreshFragment);        b.setOnClickListener(新View.OnClickListener(){
            @覆盖
            公共无效的onClick(查看视图){
                如果(getFragmentRefreshListener()!= NULL){
                    getFragmentRefreshListener()onRefresh()。
                }
            }
        });
    }
    公共接口FragmentRefreshListener {
        无效onRefresh();
    }}

MyFragment.java

 公共类MyFragment扩展片段{    @覆盖
    公共查看onCreateView(LayoutInflater充气器,容器的ViewGroup,捆绑savedInstanceState){
        视图V = NULL; //一些看法        ///您的code
        ((MainActivity)getActivity())。setFragmentRefreshListener(新MainActivity.FragmentRefreshListener(){
            @覆盖
            公共无效onRefresh(){                //刷新片段
            }
        });
        返回伏;
    }
}

I have a main activity which contains the action bar with 3 menu buttons in it.

I then have a fragment within this main activity which has a list.

I would like to be able to refresh the list in the fragment from the main activity, when one of the menu buttons is clicked, or preferably just removed all the rows from the list.

Any help is appreciated.

Thanks.

public class Favourite extends SherlockFragmentActivity {

    ActionBar actionBar;

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.favourite);

        actionBar = getSupportActionBar();

        actionBar.setDisplayShowTitleEnabled(false);

        BitmapDrawable bg = (BitmapDrawable)getResources().getDrawable(R.drawable.actionbar_bg);
        bg.setTileModeX(TileMode.REPEAT); 
        getSupportActionBar().setBackgroundDrawable(bg);

        getSupportActionBar().setIcon(R.drawable.favourite_title);

        actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
        ActionBar.Tab tabAll = actionBar.newTab();
        ActionBar.Tab tabfavs = actionBar.newTab();
        ActionBar.Tab tabhist = actionBar.newTab();
        tabAll.setText("all");
        tabfavs.setText("favs");
        tabhist.setText("hist");
        tabAll.setTabListener(new MyTabListener());
        tabfavs.setTabListener(new MyTabListener());
        tabhist.setTabListener(new MyTabListener());
        actionBar.addTab(tabAll);
        actionBar.addTab(tabfavs);
        actionBar.addTab(tabhist);


        try{

        }
        catch(Exception e)
        {
        }
    }


    @Override
    public boolean onCreateOptionsMenu(Menu menu) {

        MenuInflater inflater = getSupportMenuInflater();
        inflater.inflate(R.menu.actionbar_itemlist_favourite, menu);

        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch(item.getItemId()) {
                case R.id.history:
                    break;
                case R.id.favourite:
                    Intent favAct = new Intent(this, Favourite.class);
                    startActivity(favAct);
                    break;
                case R.id.delete:
                    ///I WANT TO BE ABLE TO REFRESH FRAGMENTLIST FROM HERE
                }
                return true;
    }

  }

class MyTabListener implements ActionBar.TabListener {

    public void onTabSelected(Tab tab, FragmentTransaction ft) {
        if(tab.getPosition()==0)
        {
            FavouriteAllWords frag = new FavouriteAllWords();
            ft.replace(android.R.id.content, frag);

        }
        else if(tab.getPosition()==1)
        {
            FavouriteFavWords frag = new FavouriteFavWords();
            ft.replace(android.R.id.content, frag);

        }
        else if(tab.getPosition()==2)
        {
            FavouriteHistWords frag = new FavouriteHistWords();
            ft.replace(android.R.id.content, frag);
        }
    }

    public void onTabUnselected(Tab tab, FragmentTransaction ft) {
        // TODO Auto-generated method stub

    }

    public void onTabReselected(Tab tab, FragmentTransaction ft) {
        // TODO Auto-generated method stub

    }

}

////////////////////MY LIST FRAGMENT CLASS

public class FavouriteAllWords extends ListFragment {

    ArrayAdapter<String> adapter;

    List<String> stringOfFavWords;

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

    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup group, Bundle saved)
    {   
        adapter = new ArrayAdapter<String>(  
                inflater.getContext(), R.layout.row, stringOfFavWords);  
                setListAdapter(adapter);  

        return super.onCreateView(inflater, group, saved);  
    }

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

}

解决方案

You can easily achieve this using INTERFACE

MainActivity.java

public class MainActivity extends Activity {

    public FragmentRefreshListener getFragmentRefreshListener() {
        return fragmentRefreshListener;
    }

    public void setFragmentRefreshListener(FragmentRefreshListener fragmentRefreshListener) {
        this.fragmentRefreshListener = fragmentRefreshListener;
    }

    private FragmentRefreshListener fragmentRefreshListener;

    @Override
    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);


        Button b = (Button)findViewById(R.id.btnRefreshFragment);

        b.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                if(getFragmentRefreshListener()!=null){
                    getFragmentRefreshListener().onRefresh();
                }
            }
        });


    }


    public interface FragmentRefreshListener{
        void onRefresh();
    }

}

MyFragment.java

public class MyFragment extends Fragment {

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View v = null; // some view

        /// Your Code


        ((MainActivity)getActivity()).setFragmentRefreshListener(new MainActivity.FragmentRefreshListener() {
            @Override
            public void onRefresh() {

                // Refresh Your Fragment
            }
        });


        return v;
    }
}

这篇关于Android的从其父活动刷新片段列表的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆