Android 在通知单击时打开特定选项卡片段

2024-01-28

我有一个使用操作栏选项卡的 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);
    }

传递指定要打开的选项卡的操作,以及待处理意图中的意图。在您的活动中检索操作(请参阅 getIntent())传递并基于它,打开特定选项卡。

Intent intent = new Intent(this, Home.class);
intent.setAction("OPEN_TAB_1");
PendingIntent pending intent = PendingIntent.getService(this, 0, intent, 0);              

// In OnCreate() or depending on implementation  
if(getIntent().getAction().equals("OPEN_TAB_1") {
     // Open Tab
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android 在通知单击时打开特定选项卡片段 的相关文章

随机推荐

  • C++ 运行时获取当前操作系统

    我需要弄清楚我的程序在运行时运行的操作系统 我正在使用 Qt 4 6 2 MinGW 和 Eclipse 以及 CDT 我的程序应在 Windows 或 Linux 上运行命令行 QProcess 现在我需要一种开关来根据操作系统运行不同的
  • 在 angularjs 中调用 $window.print() 会导致打印预览显示空白页

    我有一个非常奇怪的问题 当我在 angularjs 中调用 window print 时 我看到的只是左上角的日期 顶部的页面名称 右下角的页码和左下角的网址 然而 页面上没有其他内容 这很奇怪 因为常规页面有很多内容 我想这与我在页面上的
  • 如何使同一个 JSF 复合组件包含多次以拥有自己的 javascript 范围?

    我有一个像这样的 JSF 复合组件
  • 函数 write() 与数字表示法不一致

    考虑以下脚本 list of numbers lt as numeric for i in 1001999498 1002000501 list of numbers lt c list of numbers i write list of
  • 如何将列表写入Excel列?

    我有一个 Python 中的一些值的列表 想使用 openpyxl 将它们写入 Excel 电子表格列 到目前为止我尝试过 在哪里lstStat是需要写入 Excel 列的整数列表 for statN in lstStat for line
  • 简单:获取 Android 中发送的电子邮件的确认

    启动电子邮件意图后 如何确认电子邮件已发送或调用它的活动返回错误 Intent emailIntent new Intent Intent ACTION SEND emailIntent setType png image String s
  • 尝试在Elasticsearch中设置max_gram和min_gram

    我尝试在 Ubuntu 16 04 EC2 服务器上部署 Ruby on Rails 应用程序 但给出了有关 Elasticsearch 上 max gram 和 min gram 之间差异的错误 我还没有任何 Elasticsearch
  • React:将双色滑块拇指设置为具有透明背景的图像

    我制作了一个滑块 左边应该是蓝色 右边是灰色 蓝色也应该比灰色更厚 我有两个问题 如果拇指片具有透明切口 则滑块的蓝色部分不会一直延伸到图像上可见内容的左侧 我希望滑块的边缘是圆形的 尤其是蓝色边缘 我可能不需要灰色 By round ed
  • 按下按钮时触发点击事件

    我正在创建一个将元素移动到右侧的指令 每次单击时 该项目都会移动到右侧 但我希望只要按住按钮 该元素就会移动 directive car function return restrict A link function scope elem
  • Selenium Webdriver - 获取表数据

    我想从 UI 中的表中获取数据 我知道使用 tr 和 td 循环行和列 但我的桌子是这样的 table tbody tr td data td th data th td data td td data td tr tr td data t
  • VS 2015 文件保存时 CPU 使用率较高

    使用 Visual Studio 2015 我注意到 如果我使用所有解决方案的通用项目打开多个解决方案 如果我编辑并保存属于通用项目的一个 cs 文件 则所有 Visual Studio 2015 实例将消耗 CPU 10 15秒 请注意
  • (很多)UIWebView 内存泄漏

    我从其他帖子中看到 UIWebView 存在内存泄漏问题 然而 由于我泄漏的对象数量很多 我不得不怀疑我是否做错了什么 Leaks 报告了关于打开 UIWebView 加载页面和关闭 这是 Facebook 登录页面 的大约 60 次泄漏
  • java进程中提交内存和RSS的区别

    我正在运行一个简单的 java 进程 该进程运行 jetty 其顶部显示 2 9g 的 RAM 使用的JDK版本是1 8 0 112 使用本机内存跟踪 jcmd 显示总提交内存仅为 1 5G 内存 正如 jvisualvm 所报告的 直接缓
  • 添加用户输入的数字并在用户输入“end”时中断的循环

    创建一个不需要参数的函数 该函数要求用户输入一系列大于或等于零的数字 一次一个 用户键入 end 表示不再有数字 该函数计算所有输入值的总和 我应该能够仅使用 while 循环和 if 语句来完成此操作 我遇到的主要问题是我不知道如何做到这
  • SQLite 查询根据另一个表的值获取表

    我不确定这里必须有什么标题才能正确反映我的问题 我只能描述我想要的内容 有一个包含字段的表 id name city 还有接下来的几行 1 John London 2 Mary Paris 3 John Paris 4 Samy Londo
  • 无法使用 Laravel Mix 复制文件夹

    我有一个项目使用拉拉维尔 5 4 and Laravel 混合 我有一个图像文件夹 其中一些图像具有相同的名称但类别不同 因此它们包含在不同的目录中 So resources assets images globalimage png ve
  • 由于共享库事件而停止 - Visual Studio Code

    我是 Visual Studio Code 的初学者 我尝试在其上调试我的 C 代码 我这里有一个示例代码 include iostream using namespace std int main cout lt lt hello wor
  • My.Settings 中自定义类的数组列表

    我有一个 Visual Basic Net 2 0 程序 我正在将设置从较旧的设置文件移至 app config 程序设置文件 我正在努力尽可能地做好这件事 所以 我添加了我的设置如图所示 https i stack imgur com e
  • 启动应用程序时使用 pg-promise 验证数据库连接

    我正在构建一个快速应用程序 它使用以下命令连接到 postgres 数据库pg 承诺 https github com vitaly t pg promise module 我想确保启动应用程序服务器时数据库连接成功 换句话说 如果与数据库
  • Android 在通知单击时打开特定选项卡片段

    我有一个使用操作栏选项卡的 Android 应用程序 还有一个通知系统 我想在单击通知时直接打开特定选项卡 如何做到这一点 因为通知挂起意图只能打开活动 而我的主要活动包含 3 个选项卡的 3 个片段 以下是选项卡主要活动的代码 publi