Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/232.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android Studio条形码扫描仪应用程序。通过意向扫描_Java_Android_Android Intent_Barcode Scanner_Onactivityresult - Fatal编程技术网

Java Android Studio条形码扫描仪应用程序。通过意向扫描

Java Android Studio条形码扫描仪应用程序。通过意向扫描,java,android,android-intent,barcode-scanner,onactivityresult,Java,Android,Android Intent,Barcode Scanner,Onactivityresult,我有一个android应用程序,布局非常简单。一个按钮(扫描条形码1),后跟一个edittext(扫描内容),另一个按钮(扫描条形码2)后跟另一个edittext(扫描内容2) 我将两个editText初始化为contentTxt和contentTxt2 contentTxt = (EditText) findViewById(R.id.scan_content); contentTxt2 = (EditText) findViewById(R.id.scan_content2

我有一个android应用程序,布局非常简单。一个按钮(扫描条形码1),后跟一个edittext(扫描内容),另一个按钮(扫描条形码2)后跟另一个edittext(扫描内容2)

我将两个editText初始化为contentTxt和contentTxt2

     contentTxt = (EditText) findViewById(R.id.scan_content);
    contentTxt2 = (EditText) findViewById(R.id.scan_content2);
然后,我开始使用OnActivityResult方法,该方法检索edittext,并将其放置在正确的edittext中(它没有)

相反,条形码只是在两个文本之间复制。我在这个问题上已经纠结了一段时间,我迫切需要一个解决方案。非常感谢您的帮助

所以我更新了我的代码,但现在我没有检索条形码,结果是空的,我的toast消息弹出。有人知道发生了什么吗?无论我按什么按钮,这种情况都会发生

     private int scanFieldPosition = 0;

public void openScanner1 (View view) {
    scanFieldPosition = 1;
    IntentIntegrator scanIntegrator = new IntentIntegrator (this);
    scanIntegrator.initiateScan();

}

public void openScanner2 (View view) {
    scanFieldPosition = 2;
    IntentIntegrator scanIntegrator = new IntentIntegrator(this);
    scanIntegrator.initiateScan();

}

public void onActivityResult(int requestCode, int resultCode, Intent intent) {
    IntentResult scanningResult = IntentIntegrator.parseActivityResult(requestCode, resultCode, intent);
    if (scanningResult != null && scanFieldPosition == 1) {
        String scanContent = scanningResult.getContents();
        contentTxt.setText(scanContent);
    }

    if (scanningResult !=null && scanFieldPosition == 2) {
        String scanContent = scanningResult.getContents();
        contentTxt2.setText(scanContent);
    }


    else{
        Toast toast = Toast.makeText(getApplicationContext(),
                "No scan data received!", Toast.LENGTH_SHORT);
        toast.show();
    }

}
问题是我没有静态变量。我仍然收到祝酒词,但我的条形码将其放在正确的编辑文本中,这很奇怪。不管怎样,多亏了你的帮助,我的应用程序现在可以正常工作了

    private static int scanFieldPosition = 0;

您可以为此设置一个
static
标志,并在按下按钮1时为其指定
1
,在按下按钮2时为其指定
2
。然后,您可以在ActivityResult()上的
中检查标志。你可以这样做:

public static int editTextNumber = 0;


public void openScanner1 (View view) {
IntentIntegrator scanIntegrator = new IntentIntegrator (this);
scanIntegrator.initiateScan();
editTextNumber  = 1;
}


public void openScanner2 (View view) {
IntentIntegrator scanIntegrator = new IntentIntegrator(this);
scanIntegrator.initiateScan();
editTextNumber = 2;
}
然后在您的
onActivityResult()中


您可以为此设置一个
static
标志,并在按下按钮1时为其指定
1
,在按下按钮2时为其指定
2
。然后,您可以在ActivityResult()上的
中检查标志。你可以这样做:

public static int editTextNumber = 0;


public void openScanner1 (View view) {
IntentIntegrator scanIntegrator = new IntentIntegrator (this);
scanIntegrator.initiateScan();
editTextNumber  = 1;
}


public void openScanner2 (View view) {
IntentIntegrator scanIntegrator = new IntentIntegrator(this);
scanIntegrator.initiateScan();
editTextNumber = 2;
}
然后在您的
onActivityResult()中


您可以为此设置一个
static
标志,并在按下按钮1时为其指定
1
,在按下按钮2时为其指定
2
。然后,您可以在ActivityResult()上的
中检查标志。你可以这样做:

public static int editTextNumber = 0;


public void openScanner1 (View view) {
IntentIntegrator scanIntegrator = new IntentIntegrator (this);
scanIntegrator.initiateScan();
editTextNumber  = 1;
}


public void openScanner2 (View view) {
IntentIntegrator scanIntegrator = new IntentIntegrator(this);
scanIntegrator.initiateScan();
editTextNumber = 2;
}
然后在您的
onActivityResult()中


您可以为此设置一个
static
标志,并在按下按钮1时为其指定
1
,在按下按钮2时为其指定
2
。然后,您可以在ActivityResult()上的
中检查标志。你可以这样做:

public static int editTextNumber = 0;


public void openScanner1 (View view) {
IntentIntegrator scanIntegrator = new IntentIntegrator (this);
scanIntegrator.initiateScan();
editTextNumber  = 1;
}


public void openScanner2 (View view) {
IntentIntegrator scanIntegrator = new IntentIntegrator(this);
scanIntegrator.initiateScan();
editTextNumber = 2;
}
然后在您的
onActivityResult()中


如果
scanningResult
不为null(换句话说,如果
If
子句的条件为true),则为两个编辑文本设置文本。 创建扫描意图时,您需要保存一些标识要填写的
EditText
的信息,并在您的
onActivityResult
中检索这些信息,例如:

private int scanFieldPosition = 0;

public void openScanner1 (View view) {
    scanFieldPosition = 1;
    IntentIntegrator scanIntegrator = new IntentIntegrator (this);
    scanIntegrator.initiateScan();
}


public void openScanner2 (View view) {
    scanFieldPosition = 2;
    IntentIntegrator scanIntegrator = new IntentIntegrator(this);
    scanIntegrator.initiateScan();
}

然后检查
onActivityResult
中的
scanFieldPosition
,知道要填写哪个
EditText

如果
scanningResult
不为空(换句话说,如果
If
子句的条件为true),则为两个EditText设置文本。 创建扫描意图时,您需要保存一些标识要填写的
EditText
的信息,并在您的
onActivityResult
中检索这些信息,例如:

private int scanFieldPosition = 0;

public void openScanner1 (View view) {
    scanFieldPosition = 1;
    IntentIntegrator scanIntegrator = new IntentIntegrator (this);
    scanIntegrator.initiateScan();
}


public void openScanner2 (View view) {
    scanFieldPosition = 2;
    IntentIntegrator scanIntegrator = new IntentIntegrator(this);
    scanIntegrator.initiateScan();
}

然后检查
onActivityResult
中的
scanFieldPosition
,知道要填写哪个
EditText

如果
scanningResult
不为空(换句话说,如果
If
子句的条件为true),则为两个EditText设置文本。 创建扫描意图时,您需要保存一些标识要填写的
EditText
的信息,并在您的
onActivityResult
中检索这些信息,例如:

private int scanFieldPosition = 0;

public void openScanner1 (View view) {
    scanFieldPosition = 1;
    IntentIntegrator scanIntegrator = new IntentIntegrator (this);
    scanIntegrator.initiateScan();
}


public void openScanner2 (View view) {
    scanFieldPosition = 2;
    IntentIntegrator scanIntegrator = new IntentIntegrator(this);
    scanIntegrator.initiateScan();
}

然后检查
onActivityResult
中的
scanFieldPosition
,知道要填写哪个
EditText

如果
scanningResult
不为空(换句话说,如果
If
子句的条件为true),则为两个EditText设置文本。 创建扫描意图时,您需要保存一些标识要填写的
EditText
的信息,并在您的
onActivityResult
中检索这些信息,例如:

private int scanFieldPosition = 0;

public void openScanner1 (View view) {
    scanFieldPosition = 1;
    IntentIntegrator scanIntegrator = new IntentIntegrator (this);
    scanIntegrator.initiateScan();
}


public void openScanner2 (View view) {
    scanFieldPosition = 2;
    IntentIntegrator scanIntegrator = new IntentIntegrator(this);
    scanIntegrator.initiateScan();
}

然后检查活动结果中的
scanFieldPosition
,以了解要填写的
EditText

您没有在IntentIntegrator中显示扫描意图的构造,但我猜您使用的是相同的请求代码

更改扫描意图的构造,使其具有不同的请求代码(可能通过在上下文之外将值传递给IntentIntegrator),然后在调用onActivityResult时,您将能够检查此项以了解按下了哪个扫描按钮并填充相关的编辑文本


这是requestCode的设计目的,而不是保存可能导致状态问题的变量。

您没有在IntentIntegrator中显示扫描意图的构造,但我猜您使用的是相同的requestCode

更改扫描意图的构造,使其具有不同的请求代码(可能通过在上下文之外将值传递给IntentIntegrator),然后在调用onActivityResult时,您将能够检查此项以了解按下了哪个扫描按钮并填充相关的编辑文本


这是requestCode的设计目的,而不是保存可能导致状态问题的变量。

您没有在IntentIntegrator中显示扫描意图的构造,但我猜您使用的是相同的requestCode

更改扫描意图的构造,使其具有不同的请求代码(可能通过在上下文之外将值传递给IntentIntegrator),然后在调用onActivityResult时,您将能够检查此项以了解按下了哪个扫描按钮并填充相关的编辑文本

这就是