I have an Android app that uses Action Bar tabs. There is also a notification system.
I want to open a specific tab directly by clicking a notification. How to do this (because pending intentions can only open actions, and my main activity contains 3 fragments for 3 tabs)?
Below is the main activity code for the tabs.
public class MaintabActivity extends Activity { public static Context appContext; public static MapView mMapView; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.mainsc); appContext = getApplicationContext(); startService(new Intent(this, MyService.class)); //ActionBar ActionBar actionbar = getActionBar(); actionbar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); ActionBar.Tab ChatTab = actionbar.newTab().setText("Chat"); ActionBar.Tab MapsTab = actionbar.newTab().setText("Maps"); ActionBar.Tab SplashTab=actionbar.newTab().setText("Splash"); Fragment ChatFrag = new ChatActivity(); MapActivity mMapFragment = MapActivity.newInstance(); Fragment SplashFrag = new SplashActivity(); ChatTab.setTabListener(new MyTabsListener(ChatFrag)); MapsTab.setTabListener(new MyTabsListener(mMapFragment)); SplashTab.setTabListener(new MyTabsListener(SplashFrag)); actionbar.addTab(ChatTab); actionbar.addTab(MapsTab); actionbar.addTab(SplashTab); } @Override protected void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); outState.putInt("tab", getActionBar().getSelectedNavigationIndex()); } } class MyTabsListener implements ActionBar.TabListener { public Fragment fragment; public MyTabsListener(Fragment fragment) { this.fragment = fragment; } @Override public void onTabReselected(Tab tab, FragmentTransaction ft) { Toast.makeText(MaintabActivity.appContext, "Reselected!", Toast.LENGTH_LONG).show(); } @Override public void onTabSelected(Tab tab, FragmentTransaction ft) { ft.replace(R.id.fragment_container, fragment); } @Override public void onTabUnselected(Tab tab, FragmentTransaction ft) { ft.remove(fragment); } }
This is a service code that displays a notification.
private void showNotification() { CharSequence text = getText(R.string.local_service_started);
source share