不要开始新意图的新活动,采取旧的活动

时间:2014-11-05 08:11:56

标签: android android-intent

我正在使用NFC并且正在使用意图。发现NFC标签时 我开始我的NFCActivity。

<activity
    android:name="controller.NFCActivity" 
    android:launchMode="singleTask" >
    <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/nfc_tech_filter" />
</activity>

NFCActivity是一个没有UI的活动。它启动了我的NFCReaderTask。

String action = intent.getAction();

if (NfcAdapter.ACTION_TECH_DISCOVERED.equals(action)) {
    Tag tagFromIntent = intent.getParcelableExtra(NfcAdapter.EXTRA_TAG);

    NFCDataDevice dataDevice = new NFCDataDevice();
    dataDevice.setCurrentTag(tagFromIntent);

    byte[] systemInfoAnswer = NFCCommand.sendGetSystemInfoCommandCustom(tagFromIntent, new NFCDataDevice());

    if (NDEFHelper.decodeSystemInfoResponse(systemInfoAnswer, new NFCDataDevice())) {
        NFCReaderTask nfcReaderTask = new NFCReaderTask(this, this, dataDevice);
        nfcReaderTask.execute();
    } 
}

当ReaderTask完成后,我的回调方法onNFCReaderTaskCompleted 调用NFCActivity,我这样做:

public void onNFCReaderTaskCompleted(Long time, String value) {
    Intent newIntent = new Intent(this.getApplicationContext(), NFCResultActivity.class);
    newIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
    newIntent.putExtra(Globals.KEY_NFC, true);
    newIntent.putExtra(Globals.KEY_TIME, time);
    newIntent.putExtra(Globals.KEY_VALUE, value);

    this.startActivity(newIntent);
    this.finish();
}

第一次发现NFC标签时没问题。我现在想要的是不要 始终开始新的NFCResultActivity。当NFCResultActivity活跃时我就是 想要调用NFCResultActivity的方法来设置新数据而不是完全 创建一个新的活动。

我如何实现这一目标?

2 个答案:

答案 0 :(得分:1)

只需编辑此行即可。

  newIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP|Intent.FLAG_ACTIVITY_SINGLE_TOP);

 <activity
android:name="controller.NFCActivity" 
android:launchMode="singleTop" >

答案 1 :(得分:0)

我解决了不同的问题。

我删除了我的NFCActivity并改变了我的NFCResultActivity以进行意图收听:

<activity
        android:name="controller.NFCResultActivity"
        android:label="@string/title_activity_nfcresult" 
        android:launchMode="singleTask" >
        <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/nfc_tech_filter" />
    </activity>

我现在在我的NFCResultActivity中启动NFCReaderTask并添加了这个方法:

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

    this.setIntent(intent);
    this.resolveIntent(intent);
}

在不创建新活动的情况下更新我的数据。