2013-06-04 1 views
0

P2P NFC를 사용하는 Android 앱이 있습니다. NFC는 작동하지만 시작하려면 기기를 두 번 탭해야합니다. 내 애플 리케이션을 디버깅하고 장치를 탭하면 createNdefMessage 함수가 호출되지만 JavaBinder에서는 예외가 발생합니다. 실행 모드에서는 충돌이 발생하지 않지만 NFC를 시작하려면 장치를 두 번 탭해야합니다.Android NFC 스로 잉 예외

NFC 전에는 파일 선택자를 호출하여 전송할 파일을 선택합니다. 여기 내 코드는

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을 한 OnCreate입니다

내가이 개 의도를 겪고 있기 때문에 내 애플은

mInfoText.setTextColor(Color.WHITE); 

에서 예외가 그 것이다 스루

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; 
} 

?

+2

stacktrace를 호출하십시오. – njzk2

답변

0

전화 할 때 mInfoText.setTextColor(Color.WHITE)mInfoText은 null이라고 생각합니다. findViewById()으로 초기화하기 전에 setTextColor

+0

나는 그것을했다. onCreate에서 코드를 보면 초기화했다. – User382

+0

@mobiletest - 잘했을지 모르지만 - if 문 안에서 textview를 시작하면 ifmNfcAdapter! = null이므로 textview는 null로 유지됩니다. if 문 밖에 초기화를 옮겨보십시오. – jcw

+0

내가 거기에서 그것을 제거하고 OnCreate에서 맨 위로 놓을지라도 런타임 예외가 발생합니다. 여기서 볼 수있는 것은 텍스트 필드 때문이 아니라는 것입니다. 해당 텍스트 필드를 제거하더라도 createNdefMessage 함수의 다른 줄에 해당 유형의 예외가 발생합니다. 나는 그것이 버튼 클릭에 대한 의도이기 때문에 그것이라고 생각한다. 그래서 내 코드에서 버튼 클릭시 두 개의 인 텐트가 있고 다른 하나는 NFC입니다. 버튼을 클릭 한 다음 NFC 용 장치를 탭합니다. 나는 그것이 어딘가에서 상충되고 있다고 생각한다. 하나의 의도를 멈출 수있는 방법이 있습니까 ?? – User382