[英]How can I launch fragment in broadcast receiver
例如,如何使用广播接收器启动/提供片段:如果需要启动/提供活动,则可以使用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();
}
}
但我不知道片段
您必须lu悔意图 , putextera和sendactivity 。 然后,您可以从活动中启动片段。
片段是Activity的一部分。 如果没有活动 ,则无法启动单独的Fragment 。 您可以使用Fragment启动一个Activity 。
一种方法是在Activity中创建BroadcastReceiver内部类以启动Fragment 。
这样行吗? 将其放在您的广播接收器中:
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导航至任何片段。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.