【问题标题】:Starting Second tab fragment of first activity from second activity从第二个活动开始第一个活动的第二个选项卡片段
【发布时间】:2015-11-13 20:14:30
【问题描述】:

我是 android 新手,我被困在我正在开发的应用程序的特定部分。问题是 - 当我在 SecondActivity 中的 createEvent 按钮上执行 onClickListener 事件时,我想导航到 HomePageActivity 的第二个选项卡。我也尝试在这里和其他网站上使用各种线程的解决方案,但我仍然无法让我的代码运行。

我在 HomePageActivity 上也有 RecyclerView,它将根据点击事件进行填充。

这是两个活动的代码 sn-p -

HomePageActivity.java - 选项卡式活动

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;
        }
    }
}
}

以及来自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);
            }
        });

感谢任何帮助。提前谢谢你。

【问题讨论】:

    标签: java android android-fragments android-recyclerview fragmentpageradapter


    【解决方案1】:

    您可以致电getActivity().getIntent().getExtras() 以获取您在其他活动中设置的额外内容的Bundle

    【讨论】:

    • 我尝试获取意图,但我主要关心的是如何使用意图信息打开特定片段,即在 PlaceHolderFragment 中。
    • 类似fragment.setArguments(getIntent().getExtras());?
    • 我尝试了您的建议,但它使信息显示在所有三个选项卡式片段上,而不是一个,并且在 clickEvent 之后它仍在打开第一个选项卡。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-18
    • 2017-08-08
    • 1970-01-01
    相关资源
    最近更新 更多