【发布时间】:2014-09-30 10:31:28
【问题描述】:
好的,我的问题比标题大得多。但不能描述标题中的所有内容。所以我们开始吧。
我正在编写一个应用程序,当手机检测到 NFC 卡时,它将能够在其上写入和读取 NDEF 消息。
我使用两个按钮 READ 和 WRITE 来触发这些事件。一切正常,只是 一切都重复四 (4x) 次!
只有标签“UltraLightCard Detected”和“Connected”弹出一次。 您在“ShowMessage”中的代码中看到的其他所有内容都会弹出 4 次,AlertDialog 框也会被触发 4 次,您必须编写 4 次文本。 如果你只写了一次,然后点击“保存”3次只是为了关闭它,它不会存储字符串。
这是我的代码:
protected void ultralightCardLogic() {
final Button b_write = (Button)findViewById(R.id.b_write);
final Button b_read = (Button)findViewById(R.id.b_read);
b_write.setId(1);
b_read.setId(2);
//showImageSnap(R.drawable.ultralight);
ShowMessage("UltraLight Card Detected :" + mifareUL.getTagName(), 'a');
try {
mifareUL.connect();
mifareUL.formatT2T();
ShowMessage("Connected!" , 'd');
b_write.setOnTouchListener(new MyTouchListener());
b_read.setOnTouchListener(new MyTouchListener());
} catch (IOException e) {
e.printStackTrace();
}
}
这是 MyTouchListener:
public class MyTouchListener implements OnTouchListener{
@Override
public boolean onTouch(View v, MotionEvent event) {
// TODO Auto-generated method stu
int id = v.getId();
switch(id){
case 1:
onCreateDialog();
break;
case 2:
readNDEFmsg();
break;
case 3:
break;
}
return false;
}
}
这是 OnCreateDialog:
final View v = getLayoutInflater().inflate(R.layout.dia_box,null);
AlertDialog.Builder builder = new AlertDialog.Builder(this)
.setView(v)
.setPositiveButton("SAVE", new DialogInterface.OnClickListener(){
@Override
public void onClick(DialogInterface dialog, int id) {
// TODO Auto-generated method stub
final EditText mEdit=(EditText)v.findViewById(R.id.et_dia);
String str = mEdit.getText().toString();
writeNDEFmsg(str);
dialog.dismiss();
}
});
AlertDialog alert = builder.create();
alert.show();
如果你们需要更多代码,我可以添加它。不想写太多代码,因为我的经验告诉我,这样就没有人会尝试帮助我了。
请帮帮我
【问题讨论】:
-
您在按钮上添加了一个 TouchListener 是否正确?为什么不使用 onClickListener?
-
^^^ 我也是这么想的
-
天哪。确实可能是这样!我将尝试使用 Click Listener 并尽快报告!
-
不,不一样。只需使用 clickListener 尝试一下,我不确定这是否会导致您的行为,但可能会。因为 onTouchListener 会触发多个动作,例如 onPressed() onReleased() 等。
-
当我想 setOnClickListener 它说我必须实现以下参数:
(android.view.View.OnClickListener)。当我运行应用程序时,“写入”按钮现在不再触发。 LogCat 中有一个警告:java.lang.ClassCastExceptio: MyClickListener cannot be cast to android.view.View$OnClickListener
标签: java javascript android nfc android-alertdialog