我根据2项活动获得了Android应用程序。 Main活动只是一个输入字段和一个获取一些用户信息的按钮。当用户按下按钮时,条形码扫描器(ZXING)将启动。
每件事都很完美。但是我知道如果用户信息已经知道,我会尝试检查onCreate。如果是真的 - >启动条码扫描器。但看起来barcodescanner活动启动两次,因为: 按下后退按钮一次:其他条形码扫描器将处于活动状态。 按两次按钮:主要激活将被激活。
这是onCreate里面的检查:
if(pref.length() == 6){
startActivityForResult(intent, 0);
}
这是单击按钮时调用的函数:
public void onClick(View view) {
switch (view.getId()) {
case R.id.button1:
final EditText edit = (EditText) findViewById(R.id.panelID);
if(edit.getText().toString().length() == 6){
String temp = edit.getText().toString();
Log.e("click", temp);
Editor e = this.getPreferences(Context.MODE_PRIVATE).edit();
e.putString("panelID", temp);
e.commit();
startActivityForResult(intent, 0);
} else {
Toast.makeText(this, "Ongeldige invoer (6 cijfer id)", Toast.LENGTH_LONG).show();
}
break;
}
}
我做错了什么?
答案 0 :(得分:1)
barcodescanner
没有开始两次
它会返回主要活动,创建另一个barcodescanner
尝试删除onCreate
中的签入并查看结果
答案 1 :(得分:0)
您的麻烦似乎更多地取决于您如何管理活动的生命周期。如果您发布Activity的onCreate()方法的代码,我们可能会更好地了解您要完成的工作并相应地提出解决方案。
答案 2 :(得分:0)
问题是您不应每次都在onCreate()
启动扫描仪。我想第一次,你去扫描仪,你的父活动被破坏了。当你回去时,它必须再次创建。但这会再次启动扫描仪。然后,当你立即再次返回时,这次它还没有被摧毁。
这与劫持后退按钮的应用程序无关。它不是。回来总是有效。
答案 3 :(得分:-1)
这可能有效
在调用startActivityForResult之后清除编辑文本的数据,如
edit.setText("");
这会让你在回去时检查失败