以片段形式获取数据

时间:2014-04-19 07:00:26

标签: java android android-fragments

我有两个类:MoviiesPageActivity(扩展FragmentActivity)和MoviesPageTab1(扩展Fragment)。我需要将数据从一个发送到另一个。如何从第一个发送的第二个数据中获取数据?

MoviesPageActivity

 public class MoviesPageActivity extends FragmentActivity implements ActionBar.TabListener {

        private ViewPager viewPager;
        private TabsPagerAdapter mAdapter;
        private ActionBar actionBar;
        // Tab titles
        private String[] tabs = { "About movie", "Ratings", "Crew" };

        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.movies_page);

            // Initilization
            viewPager = (ViewPager) findViewById(R.id.pager);
            actionBar = getActionBar();
            mAdapter = new TabsPagerAdapter(getSupportFragmentManager());

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

            // Getting contents
            Intent intentGet = getIntent();
            String id = intentGet.getStringExtra("id");
            MovieStruct info = new MovieStruct();
            info = getArrInfo(id);

            // Adding contents
                    // For example, how send string id?

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


            //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) {
                    //nothing
                }

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

MoviesPageTab1

public class MoviesPageTab1 extends Fragment {

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

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

        // How can I get string id here?

        return rootView;
    }
}

2 个答案:

答案 0 :(得分:0)

我之前已经回答了这个问题,但由于没有一个答案被接受,我只想发一个链接到我的答案。 In short: use callbacks

PS。上面的链接根据official dev docs

提出的技术,引导您进入活动到片段通信的完整工作示例

答案 1 :(得分:0)

解决方案1:

创建MoviesPageTab1的对象,并在setter和getter函数的帮助下发送和接收数据。

解决方案2:

加载MoviesPageTab1片段时使用setArguments()方法。

解决方案3:

使用Callbacks进行Fragment与其父Activity之间的通信。