有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java条形码扫描器应用程序。单个活动上有多个处理程序

我有一个条形码扫描器应用程序,它的布局如下

     <Button
    style="?安卓:attr/buttonStyleSmall"
    安卓:layout_width="wrap_content"
    安卓:layout_height="wrap_content"
    安卓:text="@string/scanner"
    安卓:id="@+id/scan_barcode1"
    安卓:layout_below="@+id/spinner7"
    安卓:layout_alignParentLeft="true"
    安卓:layout_alignParentStart="true"
    安卓:layout_marginTop="25dp"
    安卓:onClick="openScanner1" />

<EditText
    安卓:layout_width="wrap_content"
    安卓:layout_height="wrap_content"
    安卓:inputType="number"
    安卓:ems="10"
    安卓:id="@+id/scan_content"
    安卓:layout_below="@+id/scan_barcode1"
    安卓:layout_alignParentLeft="true"
    安卓:layout_alignParentStart="true"
    安卓:hint="@string/serial_number"
    安卓:layout_alignRight="@+id/spinner7"
    安卓:layout_alignEnd="@+id/spinner7" />

<Button
    style="?安卓:attr/buttonStyleSmall"
    安卓:layout_width="wrap_content"
    安卓:layout_height="wrap_content"
    安卓:text="@string/scanner"
    安卓:id="@+id/scan_barcode2"
    安卓:layout_below="@+id/scan_content"
    安卓:layout_alignParentLeft="true"
    安卓:layout_alignParentStart="true"
    安卓:onClick="openScanner2" />

<EditText
    安卓:layout_width="wrap_content"
    安卓:layout_height="wrap_content"
    安卓:inputType="number"
    安卓:ems="10"
    安卓:id="@+id/scan_content2"
    安卓:layout_below="@+id/scan_barcode2"
    安卓:layout_alignParentLeft="true"
    安卓:layout_alignParentStart="true"
    安卓:hint="@string/serial_number"
    安卓:layout_alignRight="@+id/scan_content"
    安卓:layout_alignEnd="@+id/scan_content" /> 

我希望能够按scan_barcode1并在editText scan_内容中接收条形码的序列号,然后按scan_barcode2并在editText scan_内容2中接收条形码的序列号。当我按下这两个按钮中的任何一个时,我的应用程序崩溃

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

}

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

}

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

    else if (scanningResult!=null && requestCode == 2 && resultCode == RESULT_OK) {
        String scanContent = scanningResult.getContents();
        contentTxt2.setText(scanContent);
    }


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

}

这是我的日志

     Caused by: 安卓.content.ActivityNotFoundException: No Activity found to handle Intent {  }
        at 安卓.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1817)
        at 安卓.app.Instrumentation.execStartActivity(Instrumentation.java:1515)
        at 安卓.app.Activity.startActivityForResult(Activity.java:4026)
        at 安卓.app.Activity.startActivityForResult(Activity.java:3973)
        at 安卓.support.v4.app.FragmentActivity.startActivityForResult(FragmentActivity.java:820)
        at com.example.gamezcua.etaksytemscop.BeforeBatteryInventory.openScanner1(BeforeBatteryInventory.java:521)

这是我的安卓清单

    <?xml version="1.0" encoding="utf-8"?>

<application
    安卓:allowBackup="true"
    安卓:icon="@mipmap/etak_launcher"
    安卓:label="@string/app_name"
    安卓:theme="@style/AppTheme" >
    <activity
        安卓:name=".MainActivity"
        安卓:label="@string/app_name" >
        <intent-filter>
            <action 安卓:name="安卓.intent.action.MAIN" />

            <category 安卓:name="安卓.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <activity
        安卓:name=".EditExistingCloseOutPackage"
        安卓:label="@string/title_activity_edit_existing_close_out_package" >
    </activity>
    <activity
        安卓:name=".SiteInfo"
        安卓:label="@string/title_activity_site_info" >
    </activity>
    <activity
        安卓:name=".choice"
        安卓:label="@string/title_activity_choice" >
    </activity>
    <activity
        安卓:name=".NewOrExisting"
        安卓:label="@string/title_activity_new_or_existing" >
    </activity>
    <activity
        安卓:name=".NewBatteryInformation"
        安卓:label="@string/title_activity_new_battery_information" >
    </activity>
    <activity
        安卓:name=".ExistingBatteryInformation"
        安卓:label="@string/title_activity_existing_battery_information" >
    </activity>
    <activity
        安卓:name=".BatteryInstallationChecklist"
        安卓:label="@string/title_activity_battery_installation_checklist" >
    </activity>
    <activity
        安卓:name=".FinalInstallationChecklistBattery"
        安卓:label="@string/title_activity_final_installation_checklist_battery" >
    </activity>
    <activity
        安卓:name=".FinalSiteChecklist"
        安卓:label="@string/title_activity_final_site_checklist" >
    </activity>
    <activity
        安卓:name=".PhotoGallery"
        安卓:label="@string/title_activity_photo_gallery" >
    </activity>
    <activity
        安卓:name=".BeforeBatteryInventory"
        安卓:label="@string/title_activity_before_battery_inventory" >
    </activity>
    <activity
        安卓:name=".CompleteOnScopeWork"
        安卓:label="@string/title_activity_complete_on_scope_work" >
    </activity>
    <activity
        安卓:name=".JobType"
        安卓:label="@string/title_activity_job_type" >
    </activity>
    <activity
        安卓:name=".AfterInventory"
        安卓:label="@string/title_activity_after_inventory" >
    </activity>
    <activity
        安卓:name=".Both"
        安卓:label="@string/title_activity_both" >
    </activity>
</application>

更新的java文件

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

    if (scanningResult != null) {
        String scanContent = scanningResult.getContents();
        editText33.setText(scanContent);
    }

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


共 (0) 个答案