2013-06-04 86 views
0

我有一个使用P2P NFC的android应用程序。 NFC工作,但我必须点击两次设备才能启动它。当我调试我的应用程序并点击设备时,它会调用createNdefMessage函数,但会在JavaBinder中引发异常。 在运行模式下,它不会崩溃,但我必须点击两次设备才能启动NFC。Android NFC抛出异常

在NFC之前我调用文件选择器来选择要传输的文件。 这里是我的代码的onCreate

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    // INFO TEXTVIEW 
    mInfoText = (TextView) findViewById(R.id.info_text_view); 

    // FILE SELECTOR BUTTON 
    mStartActivityButton = (Button)findViewById(R.id.start_file_picker_button); 
    mStartActivityButton.setOnClickListener(new OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      switch(v.getId()) { 
      case R.id.start_file_picker_button: 

       // Create a new Intent for the file picker activity 
       Intent intent = new Intent(getApplicationContext(), FilePickerActivity.class); 

       // Start the activity 
       startActivityForResult(intent, REQUEST_PICK_FILE); 

       break; 
      } 
     } 

    }); 

    // CHECK FOR AVAILABLE NFC ADAPTOR 
    mNfcAdapter = NfcAdapter.getDefaultAdapter(this); 
    if (mNfcAdapter == null) { 

     mInfoText.setText("NFC is not available on this device."); 
    } else { 
     // Register callback to set NDEF message 
     mNfcAdapter.setNdefPushMessageCallback(this, this); 
     // Register callback to listen for message-sent success 
     mNfcAdapter.setOnNdefPushCompleteCallback(this, this); 
    } 

} 

createNdefMessage

public NdefMessage createNdefMessage(NfcEvent event) { 
    Time time = new Time(); 
    time.setToNow(); 
    mInfoText.setTextColor(Color.WHITE); 
    mInfoText.setText("File Transfer In Progress ..."); 

    NdefMessage msg = new NdefMessage(NdefRecord.createMime(
    "application/com.example.android.beam", text.getBytes())); 

    return msg; 
} 

我的应用程序得来的

mInfoText.setTextColor(Color.WHITE); 

一个例外是不是因为我有两个目的?

+2

post stacktrace之前,请试着用findViewById()进行初始化。 – njzk2

回答

0

我认为当您拨打mInfoText.setTextColor(Color.WHITE)mInfoText为空。在致电setTextColor

+0

我做到了。如果你看到onCreate中的代码,我初始化它。 – User382

+0

@mobiletest - 你可能有 - 你在if语句中启动textview,所以ifmNfcAdapter!= null,那么你的textview将保持为空。尝试将初始化移动到if语句之外 – jcw

+0

即使我从那里删除它并将它置于OnCreate的顶部,我也会得到运行时异常。我在这里看到的不是因为那个文本字段。即使我删除该文本字段,我也会在createNdefMessage函数的其他行上得到该类型的异常。我认为这是因为我在点击按钮上的意图。所以在我的代码中,我有两个意图,一个是点击按钮,另一个是NFC。我做按钮点击,然后点击NFC设备。我认为它在某处存在冲突。有没有办法我可以阻止一个意图? – User382