ABBYYモバイルイメージングSDK、Nullpointer @OnImageOperationSelected

ジョルディ・シプケンス

ここでも、ABBYYSDKの別の問題が発生しています。

このSDKを使用して画像をロードすることができました。次に、ImageOperationを実行します。ただし、nullpointer例外が発生します。

エラーログ:

09-24 10:27:56.170    3560-3560/com.example.docsproscan E/AndroidRuntime﹕ FATAL EXCEPTION: main
java.lang.NullPointerException
        at com.example.docsproscan.EditPhoto.addWidgets(EditPhoto.java:316)
        at com.example.docsproscan.EditPhoto.onImageOperationSelected(EditPhoto.java:311)
        at com.example.docsproscan.EditPhoto.access$100(EditPhoto.java:60)
        at com.example.docsproscan.EditPhoto$3.onClick(EditPhoto.java:147)
        at android.view.View.performClick(View.java:4240)
        at android.view.View$PerformClick.run(View.java:17721)
        at android.os.Handler.handleCallback(Handler.java:730)
        at android.os.Handler.dispatchMessage(Handler.java:92)
        at android.os.Looper.loop(Looper.java:137)
        at android.app.ActivityThread.main(ActivityThread.java:5103)
        at java.lang.reflect.Method.invokeNative(Native Method)
        at java.lang.reflect.Method.invoke(Method.java:525)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
        at dalvik.system.NativeStart.main(Native Method)

コード:

snijden.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            /*bitmapHeight = resized.getHeight();
            bitmapWidth = resized.getWidth();

            ratioWidth = (double) imageViewWidth / (double) bitmapWidth;
            ratioHeight = (double) imageViewHeight  / (double) bitmapHeight;
            Bitmap bitmap = crop.crop(resized, ratioWidth, ratioHeight);
            imageView.setImageBitmap(bitmap);
            imageView.setScaleType(ImageView.ScaleType.FIT_CENTER);
            */
            Log.d("mainactivity", "" + operations.get(2));

            Log.d("operation controller", "" + new ControllerToGreyscale() + " something");
            onImageOperationSelected(operations.get(2));
        }
    });

private void onImageOperationSelected( final ImageOperation imageOperation ) {
    Log.d( "MainActivity", "onImageOperationSelected()" );
    if( imageOperation != _imageOperation ) {
        _needUpdateSource = true;
    }
    _imageOperation = imageOperation;
    _operationController = imageOperation.getController();
    addWidgets( _operationController );
    _operationController.setResultView( _imageView, IN_SAMPLE_SIZE );
}

private void addWidgets( final OperationController operationController ) {
    _controlsContainer.removeAllViews();
    final List<ParametrControl> controls = operationController.createControls( this );
    for( final ParametrControl control : controls ) {
        _controlsContainer.addView( control.getView() );
    }
}

ここでの問題は、ImageOperation値がないと言っていることです。ただし、サンプルアプリ(SDKに付属)は私のアプリと同じ値を渡します。しかし、私のアプリではnullpointerを提供し、サンプルアプリでは実行します。

誰かがこのnullpointer問題を解決する方法を知っていますか?

-

上記のコードは、このSDKを使用するために必要な無限のクラスのほんの一部です。

ImageOperationクラス。

public enum ImageOperation implements LabeledColoredItem {
AUTO_BRIGHTNESS_CONTRAST(R.string.auto_brightness_contrast, new ControllerAutoBrightnessContrast(),
        OperationType.FILTER),
AUTO_ENHANCE(R.string.auto_enhance, new ControllerAutoEnhance(), OperationType.FILTER),
CONVERT_TO_GREYSCALE(R.string.convert_to_greyscale, new ControllerToGreyscale(), OperationType.FILTER),
//CROP(R.string.crop, new ControllerCrop(), OperationType.FILTER),
RECOGNIZE_EDGES(R.string.recognize_edges, new ControllerRecognizeEdges(), OperationType.DETECT);

/** Text resource's ID representing the name of the operation */
private final int _labelResourceId;

private OperationController _controller;

private OperationType _type;

/**
 * @param labelResourceId
 *            text resource's ID representing the name of the operation
 * @param control
 * @param type
 *            operation type: filter/detector/preset
 */
private ImageOperation( final int labelResourceId, final OperationController control,
        final OperationType type ) {
    _labelResourceId = labelResourceId;
    _controller = control;
    _type = type;
}

public OperationController getController() {
    return _controller;
}

@Override
public String getLabel( final Context context ) {
    return context.getString( _labelResourceId );
}

public OperationType getType() {
    return _type;
}

public static enum OperationType {
    FILTER,
    DETECT,
    PRESET;
}

@Override
public int getColor( final Context context ) {
    switch( _type ) {
        case DETECT:
            return context.getResources().getColor( R.color.detectorColor );
        case FILTER:
            return context.getResources().getColor( R.color.filterColor );
        case PRESET:
            return context.getResources().getColor( R.color.presetColor );
        default:
            return -1;
    }
}

/**
 * Comparator to sort values of {@link com.example.wp08_gillz.abbyy.com.ABBY.ImageOperation}.
 * Filter operations comes first, then detectors, then presets. Inside the group - by alphabetical order.
 */
public static class ImageOperationComparator implements Comparator<ImageOperation> {
    private final Context _context;

    public ImageOperationComparator( final Context context ) {
        _context = context;
    }

    @Override
    public int compare( final ImageOperation first, final ImageOperation second ) {
        if( first._type.ordinal() < second._type.ordinal() ) {
            return -1;
        }
        if( first._type.ordinal() > second._type.ordinal() ) {
            return 1;
        }
        return first.getLabel( _context ).compareTo( second.getLabel( _context ) );
    }
}

operation [2]の値に対するLog.dの結果:

09-24 10:27:56.162 3560-3560 / com.example.docsproscan D / mainactivity:CONVERT_TO_GREYSCALE

ジョルディ・シプケンス

解決しました。追加ウィジェットはerorrを引き起こします。ただし、おそらくメソッドは必要ないので、どこでさらにデバッグして、アプリからメソッドを削除します。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

Flutter backendless_sdkメッセージングモジュールをインポートする方法は?

分類Dev

別のHTMLのjqueryモバイルログインページ

分類Dev

WebからモバイルデバイスへのFirebaseクラウドメッセージング

分類Dev

Jqueryuiドラッグ可能なモバイルバージョン

分類Dev

Azureモバイルエンゲージメント

分類Dev

jQueryシングルページモバイルアプリ

分類Dev

LLVMモジュールでグローバル変数をインクリメントする方法は?

分類Dev

PowerShellローディングバイナリモジュール

分類Dev

ccharポインタメモリとグローバル変数

分類Dev

メインアプリのgradleモジュールでdataBindingを有効にする以外は、他のパッケージ(library / sdk)でデータバインディングを使用できません

分類Dev

UWPの非同期バインディングサムネイルイメージ

分類Dev

メジャーモードからバインディングを再バインドする方法

分類Dev

IOSモバイルデバイスでスケールダウンされていないWordpressイメージ

分類Dev

TypeScriptで「グローバル」モジュールをインポートする

分類Dev

角度モジュールでのグローバル通信:イベントバスまたはメディエーターパターン/サービス

分類Dev

JQueryモバイルシングルページまたはマルチページモード?

分類Dev

メガメニューのアンカータグがHTMLのモバイルバージョンで機能していません

分類Dev

Azureモバイルアプリ-簡単なAPIバージョニング

分類Dev

リモートデバイスのドメインモデル

分類Dev

ASP.NETMVCのデフォルトモデルバインディングエラーメッセージのローカライズまたは変更

分類Dev

DockerPowerShellイメージのインポートモジュール

分類Dev

モバイルメニューのトグルボタンが閉じない

分類Dev

ナビゲーションバーのBootstrapモバイルメニューのスタイリング

分類Dev

webpackのグローバルモジュールのメソッドをオーバーライドする

分類Dev

バイナリイメージサークルフィッティング

分類Dev

すべてのモバイルメーカーランチャーアイコンのAndroidバッジ番号

分類Dev

メザニンモバイルサイトメニュー削除

分類Dev

Pythonモジュールのgolangバインディングを作成する

分類Dev

Angular2ng2-datetime-pickerモジュールバインディング

Related 関連記事

  1. 1

    Flutter backendless_sdkメッセージングモジュールをインポートする方法は?

  2. 2

    別のHTMLのjqueryモバイルログインページ

  3. 3

    WebからモバイルデバイスへのFirebaseクラウドメッセージング

  4. 4

    Jqueryuiドラッグ可能なモバイルバージョン

  5. 5

    Azureモバイルエンゲージメント

  6. 6

    jQueryシングルページモバイルアプリ

  7. 7

    LLVMモジュールでグローバル変数をインクリメントする方法は?

  8. 8

    PowerShellローディングバイナリモジュール

  9. 9

    ccharポインタメモリとグローバル変数

  10. 10

    メインアプリのgradleモジュールでdataBindingを有効にする以外は、他のパッケージ(library / sdk)でデータバインディングを使用できません

  11. 11

    UWPの非同期バインディングサムネイルイメージ

  12. 12

    メジャーモードからバインディングを再バインドする方法

  13. 13

    IOSモバイルデバイスでスケールダウンされていないWordpressイメージ

  14. 14

    TypeScriptで「グローバル」モジュールをインポートする

  15. 15

    角度モジュールでのグローバル通信:イベントバスまたはメディエーターパターン/サービス

  16. 16

    JQueryモバイルシングルページまたはマルチページモード?

  17. 17

    メガメニューのアンカータグがHTMLのモバイルバージョンで機能していません

  18. 18

    Azureモバイルアプリ-簡単なAPIバージョニング

  19. 19

    リモートデバイスのドメインモデル

  20. 20

    ASP.NETMVCのデフォルトモデルバインディングエラーメッセージのローカライズまたは変更

  21. 21

    DockerPowerShellイメージのインポートモジュール

  22. 22

    モバイルメニューのトグルボタンが閉じない

  23. 23

    ナビゲーションバーのBootstrapモバイルメニューのスタイリング

  24. 24

    webpackのグローバルモジュールのメソッドをオーバーライドする

  25. 25

    バイナリイメージサークルフィッティング

  26. 26

    すべてのモバイルメーカーランチャーアイコンのAndroidバッジ番号

  27. 27

    メザニンモバイルサイトメニュー削除

  28. 28

    Pythonモジュールのgolangバインディングを作成する

  29. 29

    Angular2ng2-datetime-pickerモジュールバインディング

ホットタグ

アーカイブ