android- call方法存在于她的活动片段中

时间:2014-03-03 21:34:56

标签: android fragment slidingmenu

我使用本教程制作滑动菜单this

//这是我的片段名称

 HomeFragment.java
    package info.androidhive.slidingmenu;

    import android.app.Fragment;
    import android.os.Bundle;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.ViewGroup;

    public class HomeFragment extends Fragment {

        public HomeFragment(){}

        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                Bundle savedInstanceState) {

            View rootView = inflater.inflate(R.layout.fragment_home, container, false);

            return rootView;
        }

           public void refresh_data(){
        // my code goes here
            }
           }

我想从主要活动调用refresh_data()方法 在主菜单中

 @Override
        public boolean onOptionsItemSelected(MenuItem item) {
            // toggle nav drawer on selecting action bar app icon/title
            if (mDrawerToggle.onOptionsItemSelected(item)) {
                return true;
            }
            // Handle action bar actions click
            switch (item.getItemId()) {
            case R.id.refresh:
            //i should call refresh method here
                return true;
            default:
                return super.onOptionsItemSelected(item);
            }
    }

任何人都可以帮助我,我怎么能在这里分配片段标签 提前谢谢你

2 个答案:

答案 0 :(得分:1)

设置setHasOptionsMenu(true); 在创建视图

@Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        View rootView = inflater.inflate(R.layout.fragment_messages, container,
                false);
                     //your code here

                  setHasOptionsMenu(true);
 }

并覆盖选定的选项

@Override
    public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
       // consider your menu have refresh item
    case R.id.refresh:
        Toast.makeText(getActivity(), "Refresh active", Toast.LENGTH_LONG).show();
        refresh_messages();
        break;

    default:
        break;
    }
        return super.onOptionsItemSelected(item);
    }

refresh_messages(){


//refresh code here
}

答案 1 :(得分:0)

在您的主要活动中,假设您的片段有一个名为R.id.details的ID,

HomeFragment f = (HomeFragment)getFragmentManager().findFragmentById(R.id.details);
if(f != null) {
  f.refresh_data();
}

您可以为XML布局文件中的片段分配ID。