Starting Second tab fragment of first activity from second activity

邮差的信 提交于 2019-12-08 03:49:47

问题


I am new to android and I am stuck at particular section of the app which I am working on. The problem is - I want to navigate to the second tab of HomePageActivity when I perform onClickListener event on createEvent button in my SecondActivity. I tried using solution from various threads here and on other sites too but I was still not able to get my code running.

I also have RecyclerView on HomePageActivity which is to be populated based on the click event.

Here is the code snippet from both the activities -

HomePageActivity.java - Tabbed Activity

public class HomePageActivity extends AppCompatActivity
{
 protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_home_page);

        fragmentInfo = getIntent().getExtras();
        if (fragmentInfo != null)
        {
            tabNumber = fragmentInfo.getInt("tabNumber");
        }
        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);
        mSectionsPagerAdapter = new SectionsPagerAdapter(getSupportFragmentManager());
        mViewPager = (ViewPager) findViewById(R.id.container);
        mViewPager.setAdapter(mSectionsPagerAdapter);

        TabLayout tabLayout = (TabLayout) findViewById(R.id.tabs);
        tabLayout.setupWithViewPager(mViewPager);
    }

public class SectionsPagerAdapter extends android.support.v4.app.FragmentPagerAdapter
    {
        String[] tabList = {"Communities", "Events", "People"};

        public SectionsPagerAdapter(android.support.v4.app.FragmentManager fm)
        {
            super(fm);
        }

        @Override
        public android.support.v4.app.Fragment getItem(int position)
        {
            return PlaceholderFragment.newInstance(position + 1);
        }

        @Override
        public int getCount()
        {
            return tabList.length;
        }

        @Override
        public CharSequence getPageTitle(int position)
        {
            return tabList[position];
        }
    }
public static class PlaceholderFragment extends android.support.v4.app.Fragment
{
    private static final String ARG_SECTION_NUMBER = "section_number";

    public static PlaceholderFragment newInstance(int sectionNumber)
    {
        PlaceholderFragment fragment = new PlaceholderFragment();
        Bundle args = new Bundle();
        args.putInt(ARG_SECTION_NUMBER, sectionNumber);
        fragment.setArguments(args);
        return fragment;
    }

    public PlaceholderFragment()
    {
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState)
    {
        int viewNumber = getArguments().getInt(ARG_SECTION_NUMBER);
        final String[] eventsListArray = {"Event1", "Event2"};

        if (viewNumber == 1)
        {
            View rootView = inflater.inflate(R.layout.fragment_communities, container, false);
            TextView textView = (TextView) rootView.findViewById(R.id.communitieslabel);
            textView.setText("communities");
            return rootView;
        }
        else if (viewNumber == 2)
        {
            View rootView = inflater.inflate(R.layout.fragment_events, container, false);
            eventsList = (RecyclerView) rootView.findViewById(R.id.recyclerViewEvents);
            fab = (FloatingActionButton) rootView.findViewById(R.id.fab);
            fab.setOnClickListener(new View.OnClickListener()
            {
                @Override
                public void onClick(View view)
                {
                    Intent intent = new Intent(getActivity().getBaseContext(), CreateEvents.class);
                    startActivity(intent);
                }
            });

            eventsList.setHasFixedSize(true);
            mLayoutManager = new LinearLayoutManager(getActivity());
            eventsList.setLayoutManager(mLayoutManager);
            eventsListAdapter = new RecyclerEventsAdapter(getActivity(), eventListInfo);
            eventsList.setAdapter(eventsListAdapter);
            return rootView;
        }
        else
        {
            View rootView = inflater.inflate(R.layout.fragment_peopleprofile, container, false);
            TextView textView = (TextView) rootView.findViewById(R.id.peoplelabel);
            textView.setText("people");
            return rootView;
        }
    }
}
}

And the code from the SecondActivity -

buttonCreateEvent.setOnClickListener(new View.OnClickListener()
        {
            @Override
            public void onClick(View v)
            {
                String[] eventInfo = new String[0];
                getEventName = editTextEventName.getText().toString();
                getEventDetail = editTextEventDetails.getText().toString();
                getEventLocation = editTextEventLocation.getText().toString();
                while (!getEventName.equals("") && !getEventDetail.equals("") && !getEventLocation.equals("") && !getEventDate.equals(""))
                {
                    eventInfo = new String[]{getEventName, getEventDetail, getEventLocation, getEventDate};
                }
                Intent intent = new Intent(CreateEvents.this, HomePageActivity.class);
                intent.putExtra("tabNumber", 2);
                intent.putExtra("openEventFragment", eventInfo);
                startActivity(intent);
            }
        });

Any help is appreciated. Thank you in advance.


回答1:


You can call getActivity().getIntent().getExtras() to get a Bundle of extras you set in other activity.



来源:https://stackoverflow.com/questions/33701042/starting-second-tab-fragment-of-first-activity-from-second-activity

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!