[英]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.