我正在使用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的方法来设置新数据而不是完全 创建一个新的活动。
我如何实现这一目标?
答案 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);
}
在不创建新活动的情况下更新我的数据。