Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/213.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 片段和意图过滤器_Android_Android Manifest_Android Intent - Fatal编程技术网

Android 片段和意图过滤器

Android 片段和意图过滤器,android,android-manifest,android-intent,Android,Android Manifest,Android Intent,我们都知道如何在AndroidManifest.xml中使用意图过滤器来声明搜索、推送等活动的功能。我目前使用这样的意图过滤器以以下方式注册自定义URL方案: <activity android:name="NameOfActivity" > <intent-filter > <action android:name="android.intent.action.VIEW" /> <category android

我们都知道如何在AndroidManifest.xml中使用意图过滤器来声明搜索、推送等活动的功能。我目前使用这样的意图过滤器以以下方式注册自定义URL方案:

<activity android:name="NameOfActivity" >
    <intent-filter >
        <action android:name="android.intent.action.VIEW" />
        <category android:name="android.intent.category.DEFAULT" />
        <category android:name="android.intent.category.BROWABLE" />
        <data
            android:host=""
            android:scheme="customscheme" />
    </intent-filter>
</activity>

这一切都非常有效,直到我决定将所有活动转换为片段,因为我需要以不同的方式在表上显示用户界面。现在,在声明为大或更大的设备上,我没有在活动之间切换,而是有一个活动可以根据请求删除和添加新片段。这个选项被视为屏幕的左侧始终显示相同的内容,因此我没有将此内容添加到所有活动中,而是更改了片段

这里的问题是,虽然intent filter在手机上启动正确的活动,但平板电脑上不应启动此活动。相反,我想在片段中处理这个URL。到目前为止,我看没有办法解决这个问题。一个想法是以编程方式添加意图过滤器,但经过一些研究后,我无法确定这是否可行。另一个想法是以某种方式在片段上添加意图过滤器,但这不起作用,因为如果没有托管它的活动,片段就无法启动

简言之: 在手机上,我需要一个活动来处理意图过滤器,但在平板电脑上,我需要另一个活动来处理意图过滤器


有什么方法可以做到这一点吗?

是否可以让您的
意图过滤器活动确定设备的分辨率,然后启动相应的活动

此外,我还认为片段的设计考虑到了您的案例:描述用户界面的各个方面,然后根据屏幕分辨率显示所有或部分功能


一个月后,我还没有找到解决办法。据我们所知,这项活动是在其他活动的基础上开展的。它破坏了整个流程,是一个非常糟糕的解决方法,但至少它是有效的。排除该功能是不可能的,因此这是唯一的解决方案。我真的很高兴看到一个更好的解决方案,但据我所知,这似乎是不可能的。

我认为你在错误的方向上接近整个片段范例

在手机上,我需要一个活动来处理意图过滤器,但在平板电脑上,我需要另一个活动来处理意图过滤器

用我的方式重新表述你的总结:

在手机上,我需要活动加载特定片段,基于 设备屏幕大小。在这里,手机上加载的片段将具有某种机制来启动另一个包含更多信息的活动

在平板电脑上,我需要活动加载两个片段。在这里,左侧片段将始终显示相同的内容,而加载的右侧片段将通过某种机制进行更改以交换片段

可以在布局XML中指定不同的片段(对于单个活动,在不同的布局文件夹中使用不同的XML布局文件-使用大小限定符),因此不需要Java根据设备大小加载不同的片段/片段集

如果不了解您的应用程序以及您选择(或为什么需要)进行单独活动的原因,就很难进一步阐述


如果要继续使用当前的解决方案,可以使用手动覆盖backbackback。

我看不出这将如何解决我的问题。当应用程序在手机上运行时,它会起作用,因为正确的活动已经启动。但在平板电脑上,该活动将如何推动其他活动中的片段?它没有对它的引用,并且重新启动其他活动不是替代方案,因为这会使我的系统变得无用。好的解决方案: