【发布时间】:2013-05-04 03:56:38
【问题描述】:
我有一个使用操作栏选项卡的 android 应用程序。还有一个通知系统。
我想在单击通知时直接打开特定选项卡。如何做到这一点(因为通知待处理意图只能打开活动,而我的主要活动包含 3 个标签的 3 个片段)?
以下是标签的主要活动代码。
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);
}
}
这是显示通知的服务代码。
private void showNotification() {
CharSequence text = getText(R.string.local_service_started);
// Set the icon, scrolling text and timestamp
Notification notification = new Notification(R.drawable.ic_launcher, text,
System.currentTimeMillis());
// The PendingIntent to launch our activity if the user selects this notification
PendingIntent contentIntent = PendingIntent.getActivity(this, 0,
new Intent(this, MaintabActivity.class), 0);
// Set the info for the views that show in the notification panel.
notification.setLatestEventInfo(this, getText(R.string.local_service_label),
text, contentIntent);
// Send the notification.
mNM.notify(NOTIFICATION, notification);
}
【问题讨论】:
-
@user2319636-发布一些代码。
-
代码是什么?它的常规操作栏选项卡,我想在单击通知时打开假设选项卡 B。
-
user2319636-当您点击通知时,它会调用您包含选项卡的活动,您可以通过此--viewPager.setCurrentItem(position); 调用 viewPager 中的特定片段;
-
如果有两种不同类型的通知,我想打开不同的标签怎么办? Activity 如何知道点击了哪个通知?
-
@user2319636-为此,您可以通过通知传递选项卡位置......这样当调用活动时,它将根据视图寻呼机中片段的位置显示......发布一些代码以便我可以帮助你。
标签: android android-fragments android-actionbar android-notifications