在OnCreate中启动新活动

时间:2011-10-05 11:15:24

标签: android zxing

我根据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;
        }
    }

我做错了什么?

4 个答案:

答案 0 :(得分:1)

barcodescanner没有开始两次 它会返回主要活动,创建另一个barcodescanner

尝试删除onCreate中的签入并查看结果

答案 1 :(得分:0)

您的麻烦似乎更多地取决于您如何管理活动的生命周期。如果您发布Activity的onCreate()方法的代码,我们可能会更好地了解您要完成的工作并相应地提出解决方案。

答案 2 :(得分:0)

问题是您不应每次都在onCreate()启动扫描仪。我想第一次,你去扫描仪,你的父活动被破坏了。当你回去时,它必须再次创建。但这会再次启动扫描仪。然后,当你立即再次返回时,这次它还没有被摧毁。

这与劫持后退按钮的应用程序无关。它不是。回来总是有效。

答案 3 :(得分:-1)

这可能有效

在调用startActivityForResult之后清除编辑文本的数据,如

edit.setText("");

这会让你在回去时检查失败