0

我的应用只使用一个Activity来承载多个Fragment,也就是说手机上显示的每个屏幕视图(页面)都是一个Fragment。我唯一的活动的布局如下所示:

<?xml version="1.0" encoding="utf-8"?>
<merge xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" 
    > 
     <FrameLayout 
        android:id="@+id/fragment_placeholder"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:gravity="center_horizontal|center_vertical"
      /> 
</merge>

如上所示,<FrameLayout>是片段占位符。因此,第一个片段通过以下方式添加到占位符:

fragmentTransaction.add(R.id.fragment_placeholder, FirstFragment, TAG1);

下一个片段通过替换现有片段来显示:

fragmentTransaction.replace(R.id.fragment_placeholder, AnotherFragment, TAG2);

一切正常。

现在,我想向我的应用程序添加一项新功能,即读取 NFC 标签数据并在片段 ( NfcFragment ) 上显示数据。

我遵循了 Android Developers NFC 指南并已成功配置我的应用程序以读取 NFC 数据。我的AndroidManifest.xml

<uses-permission android:name="android.permission.NFC" />
<uses-feature android:name="android.hardware.nfc" android:required="true" />
<application
       …&gt;
        <activity
            android:name="com.nfc.MainActivity"
            android:label="@string/app_name" 
            android:screenOrientation="portrait"
            android:launchMode="singleTop">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />

            </intent-filter>

            <intent-filter>
                <action android:name="android.nfc.action.TECH_DISCOVERED"/>
                <category android:name="android.intent.category.DEFAULT"/>

          </intent-filter>

            <meta-data android:name="android.nfc.action.TECH_DISCOVERED"
                        android:resource="@xml/techs" />

        </activity>
    </application>

现在,当手机靠近 NFC 标签时,我的应用程序会自动启动。我需要的是,用户手动导航到NfcFragment。在NfcFragment上有一个ToggleButton指示 NFC 阅读器功能ONOFF的标​​志。只有当用户选择了ON时,如果 NFC 标签靠近手机,数据会被读取并显示在NfcFragment上。否则,什么都不会发生。

如何实现这个功能?是否可以使用我当前托管多个片段的一个活动的架构来实现此功能?

4

2 回答 2

1

如果您想动态打开和关闭应用对 NFC 意图的响应方式,您可以<activity-alias>在清单中使用带有 NFC 意图的意图过滤器的部分。有关完整详细信息,请参阅https://stackoverflow.com/a/11379168/1202968

于 2013-06-11T11:42:35.347 回答
0

查看 BroadcastReceiver 来处理 NFC 意图过滤器,并在 onReceive() 中决定您的应用是否会处理它。请参阅BroadcastReceiver 中的 startActivity()

于 2013-06-10T08:05:45.977 回答