Hi Leute,
Bin der neue Frischling im Android Development und wollte gerne Frage ob ihr vielleicht mal mein Code anschauen könnt ?
Ich habe 2 TextFields die ich übergeben will, aber weis nicht ob ich das so richtig gemacht habe. Mommentan bekomme ich nur den String vom ersten TextField also Peter Smith übergeben.
Hier mein Code:
Bin der neue Frischling im Android Development und wollte gerne Frage ob ihr vielleicht mal mein Code anschauen könnt ?
Ich habe 2 TextFields die ich übergeben will, aber weis nicht ob ich das so richtig gemacht habe. Mommentan bekomme ich nur den String vom ersten TextField also Peter Smith übergeben.
Hier mein Code:
Code:
package zed.test.nfc;
import zed.test.nfc.R;
import android.app.Activity;
import android.content.Intent;
import android.nfc.NdefMessage;
import android.nfc.NdefRecord;
import android.nfc.NfcAdapter;
import android.nfc.NfcAdapter.CreateNdefMessageCallback;
import android.nfc.NfcAdapter.OnNdefPushCompleteCallback;
import android.nfc.NfcEvent;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.os.Parcelable;
import android.provider.Settings;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.widget.TextView;
import android.widget.Toast;
public class MainActivity extends Activity implements CreateNdefMessageCallback,
OnNdefPushCompleteCallback {
NfcAdapter mNfcAdapter;
TextView beamMsg;
TextView beamMsg2;
private static final int MESSAGE_SENT = 1;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
beamMsg = (TextView) findViewById(R.id.msg);
beamMsg2 = (TextView) findViewById(R.id.msg_ID);
beamMsg.setText("Peter Smith");
beamMsg2.setText("123456");
// Check for available NFC Adapter
mNfcAdapter = NfcAdapter.getDefaultAdapter(this);
if (mNfcAdapter == null) {
beamMsg = (TextView) findViewById(R.id.msg);
beamMsg2= (TextView) findViewById(R.id.msg_ID);
beamMsg.setText("NFC is not available on this device.");
beamMsg2.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);
}
}
public void submitClicked(View v)
{
Toast toast = Toast.makeText(getApplicationContext(), R.string.info,
Toast.LENGTH_LONG);
toast.show();
}
/**
* Implementation for the CreateNdefMessageCallback interface
*/
@Override
public NdefMessage createNdefMessage(NfcEvent event) {
NdefMessage msg = new NdefMessage(NdefRecord.createMime(
beamMsg.getText() .toString(), null));
return msg;
}
public NdefMessage createNdefMessage_two(NfcEvent event) {
NdefMessage msg2 = new NdefMessage(NdefRecord.createMime(
beamMsg2.getText() .toString(), null));
return msg2;
}
/**
* Implementation for the OnNdefPushCompleteCallback interface
*/
@Override
public void onNdefPushComplete(NfcEvent arg0) {
// A handler is needed to send messages to the activity when this
// callback occurs, because it happens from a binder thread
mHandler.obtainMessage(MESSAGE_SENT).sendToTarget();
}
/** This handler receives a message from onNdefPushComplete */
private final Handler mHandler = new Handler() {
@Override
public void handleMessage(Message msg) {
switch (msg.what) {
case MESSAGE_SENT:
Toast.makeText(getApplicationContext(), "Message sent!", Toast.LENGTH_LONG).show();
break;
}
}
};
@Override
public void onResume() {
super.onResume();
// Check to see that the Activity started due to an Android Beam
if (NfcAdapter.ACTION_NDEF_DISCOVERED.equals(getIntent().getAction())) {
processIntent(getIntent());
}
}
@Override
public void onNewIntent(Intent intent) {
// onResume gets called after this to handle the intent
setIntent(intent);
}
/**
* Parses the NDEF Message from the intent and prints to the TextView
*/
void processIntent(Intent intent) {
Parcelable[] rawMsgs = intent.getParcelableArrayExtra(
NfcAdapter.EXTRA_NDEF_MESSAGES);
// only one message sent during the beam
NdefMessage msg = (NdefMessage) rawMsgs[0];
NdefMessage msg2 = (NdefMessage) rawMsgs[1];
// record 0 contains the MIME type, record 1 is the AAR, if present
beamMsg.setText(new String(msg.getRecords()[0].getPayload()));
beamMsg2.setText(new String(msg.getRecords()[1].getPayload()));
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// If NFC is not available, we won't be needing this menu
if (mNfcAdapter == null) {
return super.onCreateOptionsMenu(menu);
}
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.options, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.menu_settings:
Intent intent = new Intent(Settings.ACTION_NFCSHARING_SETTINGS);
startActivity(intent);
return true;
default:
return super.onOptionsItemSelected(item);
}
}
}