【问题标题】:How can I launch fragment in broadcast receiver如何在广播接收器中启动片段
【发布时间】:2014-03-06 11:34:54
【问题描述】:

如何使用广播接收器启动/午餐片段 例如 : 如果我需要 start/luanch 活动,我可以使用 intent

public void onReceive(final Context context, Intent intent) {

    this.context = context;
    this.intent = intent;

    try {
        Bundle bundle = intent.getExtras();

        int messageID = bundle.getInt("id");

        intent = new Intent(context, GetAlarm.class);

        intent.putExtra("id",messageID);

        intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        context.startActivity(intent);

    } catch (Exception e) {
        Toast.makeText(context, "There was an error ", Toast.LENGTH_SHORT)
                .show();
        e.printStackTrace();
    }
}

但我不知道片段怎么样

【问题讨论】:

    标签: android android-fragments broadcastreceiver


    【解决方案1】:

    您必须 luanch 意图和 putexterasendactivity。 然后你可以从活动中启动片段。

    【讨论】:

      【解决方案2】:

      FragmentActivity 的一部分。如果没有 Activity,您将无法启动单独的 Fragment。您可以使用 Fragment 启动 Activity

      一种方法是在Activity中创建BroadcastReceiver内部类来启动Fragment

      【讨论】:

        【解决方案3】:

        这行得通吗?把它放在你的广播接收器中:

        activityIntent = new Intent(context, MainActivity.class);
        activityIntent.putExtra("fragment", "fragment2");
        activityIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        context.startActivity(activityIntent);
        

        在您用于设置片段寻呼机适配器的代码下方:

        Bundle bundle = getIntent().getExtras();
        if (bundle != null) {
            if (bundle.getString("fragment") != null) {
                /*Log.w(getClass().toString(), bundle.getString("fragment"));*/
                viewPager.setCurrentItem(2);
            }
        }
        

        此代码通常如下所示:

                final ViewPager viewPager = (ViewPager) findViewById(R.id.pager);
                final PagerAdapter adapter = new FragmentPagerAdapter
                        (getSupportFragmentManager(), tabLayout.getTabCount());
                viewPager.setAdapter(adapter);
                viewPager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(tabLayout));
                tabLayout.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
                    @Override
                    public void onTabSelected(TabLayout.Tab tab) {
                        viewPager.setCurrentItem(tab.getPosition());
                    }
        
                    @Override
                    public void onTabUnselected(TabLayout.Tab tab) {
        
                    }
        
                    @Override
                    public void onTabReselected(TabLayout.Tab tab) {
        
                    }
        
                });
        

        只需确保它位于您设置适配器的位置下方,而不仅仅是您的 viewpager,否则您将无法通过 viewpager 导航到任何片段。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-10-05
          • 1970-01-01
          • 1970-01-01
          • 2023-03-23
          相关资源
          最近更新 更多