2014-05-23 44 views
0

我的出發點是在這裏https://github.com/rudsonlive/Navigation-Drawer-ActionBarCompat實現一個新的應用與nfc寫作支持。如何在碎片中的nfc標籤上寫入數據?

現在我想實現在nfc標籤上寫入數據。因此,我針對不同類型的數據使用不同的片段(例如,一個片段用於在nfc標籤上寫入聯繫人數據,下一個片段用於在nfc標籤上寫入特定的應用程序數據,等等)。

對於另一個應用程序,我成功實現了這一點,但爲了設置與我失敗的片段的應用程序。

這就是我在活動中實現標記寫入的方式。顯示AlertDialog以通知用戶接近標籤並處理特定意圖。

enableTagWriteMode(); 
AlertDialog.Builder ad = new AlertDialog.Builder(NfcDialogActivity.this).setTitle("Approach Tag").setOnCancelListener(
    new DialogInterface.OnCancelListener() { 
     @Override 
     public void onCancel(DialogInterface dialog) { 
      disableTagWriteMode(); 
     } 
    }); 
alert = ad.create(); 
alert.show(); 

@Override 
protected void onNewIntent(Intent intent) { 
    // Tag writing mode 
    if (mWriteMode && NfcAdapter.ACTION_TAG_DISCOVERED.equals(intent.getAction())) { 
     Tag detectedTag = intent.getParcelableExtra(NfcAdapter.EXTRA_TAG); 
     if (writeTag(mNdefMessage, detectedTag)) { 
      Toast.makeText(this, "Writing complete", Toast.LENGTH_LONG).show(); 
      alert.cancel(); 
     } 
    } 
} 

可能有人給我一個提醒如上述片段中提到如何寫代碼?

在此先感謝& SRY,我的英語...

回答

1

你必須從你的活動委託你的意圖它被你的片段進行處理。用於獲取NFC意圖的onNewIntent()僅適用於活動。因此,當NFC Intent發生時,您必須確保在準備就緒後將其發送到碎片(例如,通過從碎片內的getActivity()。getIntent()獲取Intent)。

0

感謝您的諮詢!想通了,有必要實現onNewIntent()方法,如

@Override 
public void onNewIntent(Intent intent) { 
    setIntent(intent); 
}