当前位置: 首页 > 知识库问答 >
问题:

意图和onNewIntent

相野
2023-03-14

我有一个应用程序,它有一个名为NFCScannerActivity的主菜单屏幕。目前,它在舱单中没有发射模式(标准)。如果单击getRota,它会将您带到rota屏幕,该屏幕在清单中定义为“单一任务”,只是来自WebCall的数据的listview。

在rota屏幕中,您可以从optionsMenu栏点击nextRota。当发生这种情况时,将启动一个指定菜单屏幕(NfcScannerActivity)的意图,因为这是进行html" target="_blank">webcall以获取第二天的rota数据的地方。一旦检索到数据,就会再次启动rota屏幕。

所有这些工作都很好,但我相信有一些问题在应用程序中,由于有多个实例的菜单屏幕在任务。如果我将NfcScannerActivity指定为'singletask',那么当您单击next rota时,它将停留在菜单屏幕上,就像它没有处理“next_rota”意图操作一样。

我明白,我可能必须在NfcScannerActivity活动中重写onNewIntent。

这是怎么做到的?我试过以下方法。

@Override
    protected void onNewIntent(Intent intent) {
        super.onNewIntent(intent);
        setIntent(intent);
    }

.

这就是当用户从选项菜单中单击next_rota时,rota活动中所包含的内容。

Intent i = new Intent(this, NfcscannerActivity.class);
            i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
            i.putExtra("nextRota", nextDay);
            i.setAction("NEXT_ROTA");
            startActivity(i);

.

然后,在NfcScannerActivity的onCreate中,我有以下内容。

if(intent.getAction().equalsIgnoreCase("NEXT_ROTA")){

            Log.e(TAG, "next rota action");
            String date = intent.getStringExtra("nextRota");



            getNextRota(date);


        }
Intent intent = new Intent(NfcscannerActivity.this,
                            GetRota.class);
             Bundle b = new Bundle();
             b.putSerializable("rotaArray", rotaArray);


             intent.putExtra("rotaArrayBundle", b);
             startActivity(intent);

因此,我已经在OnCreate内的NfcScannerActivity中处理了'next_rota'意图操作。我必须在OnnewIntent中做同样的事情吗?

共有1个答案

黄景胜
2023-03-14

尝试以下操作

在rota screen活动中,当“启动指定菜单屏幕的意图”时

Intent intent = new Intent(<rota screen activity>, NfcScannerActivity.class);
intent.setAction("NEXT_ROTA");
//this brings the previous existing activity to the front of the stack 
//instead of creating a new one
intent.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
startActivity(intent);

在NfcScannerActivity中

@Override
protected void onNewIntent(Intent intent) {
    super.onNewIntent(intent);

    if(intent.getAction().equals( "NEXT_ROTA")){
        String date = intent.getStringExtra("nextRota");
        getNextRota(date);      
    }       
}
 类似资料:
  • 我在我的应用程序中使用Android Arch组件和MVVM架构。 模型层和存储库类决定并提供数据给viewmodel,然后再提供给view层。 如果activity要使用的数据既不是来自网络,也不是来自数据库,而是来自之前的activity的意图呢?在这种情况下你遵循什么模式?

  • 1.1. 意图 1.1. 意图 意图指用户说话的目的,即用户想要表达什么、想做什么。用户的对话中可能含有多个意图,这些意图按照概率的大小进行排序。 如用户说“今天天气怎么样?”,意图就是“查询天气”,用户说“我想订一张火车票”,意图就是“买火车票”。 在技能开放平台创建一个意图,包含下面三个部分。 intent参数:表示意图名称。 slots参数:表示与上述意图依赖的词表名称和内容。词表通过词表名

  • 本文向大家介绍Android隐式和显式意图,包括了Android隐式和显式意图的使用技巧和注意事项,需要的朋友参考一下 示例 显式意图用于在同一应用程序包内启动活动或服务。在这种情况下,将明确提及所需类的名称: 但是,对于用户设备上安装的可以处理该意图的任何应用程序,系统会在系统上发送隐式意图。这用于在不同应用程序之间共享信息。 可以在Android Developer文档中找到有关差异的更多详细

  • 如何设置另一个操作,以及如何将setData与Uri参数以外的其他参数一起使用? 我只是一般地试图理解这两种类型的意图。

  • 我们使用意图在两个活动之间切换,片段也是出于相同的目的。那么为什么我们不能总是使用意图而不是片段呢?

  • 我想使用共享命令从图库获取图像。 我目前的代码是: imageUri 的值为:content://media/external/images/media/37 但是函数“openInputStream”会抛出错误“java.io.FileNotFoundException”。 通过下面的函数,我得到了图像的真实路径。 但我不知道如何将其转换为位图。