2011-03-21 4 views
0

ジェスチャライブラリをビットマップイメージとして表示する必要があります。以下のコードは私が持っているものですが、それは動作しないようです。プログラムを実行するたびにLogcatでエラーが発生します。ライブラリからのジェスチャをビットマップとして表示する方法は?

sStore = GestureLibraries.fromRawResource(this, R.raw.gestures_alph); 
    int i = 0; 
    for (String name : sStore.getGestureEntries()) 
    { 
      for (Gesture gesture : sStore.getGestures(name)) 
      { 
       Bitmap bitmap = gesture.toBitmap(mThumbnailSize, mThumbnailSize, mThumbnailInset, mPathColor); 
       theList.add(i,bitmap); 
       i++; 
      } 
    } 

    int rand = (int)(Math.random()*theList.size()); 
    Bitmap element = theList.get(rand); 
    imagetemp.setImageBitmap(element); 
    gestures.addView(imagetemp); 

} 

私が手にエラーを以下に示し、これは、ArrayListの中には何もないと言うので、それはループのため、おそらくです。

ERROR/AndroidRuntime(8258):キャッチされないハンドラ:java.lang.RuntimeException:キャッチされない例外により ERROR/AndroidRuntime(8258)に出メインスレッド活性ComponentInfo {com.menu.sample/COMを開始できません。 menu.sample.ImageTest}:java.lang.IndexOutOfBoundsException:無効な場所0、サイズが0 java.util.ArrayList.get(ArrayList.java:341)でエラーがライブラリをしなければならなかった 固定

最初にロードされます。

if (sStore.load()){ 
    for (String name : sStore.getGestureEntries())  { 
     for (Gesture gesture : sStore.getGestures(name)) 

       { 
+0

私が取得したエラーを修正しました。ライブラリをロードしませんでした。 – Navigatron

答えて

0

エラーは基本的にビットマップのリストが空であることを伝えようとしています。だから、まず、リストのサイズをチェックしてください。

if(theList.size() > 0){ 
    int rand = (int)(Math.random()*theList.size()); 
    Bitmap element = theList.get(rand); 
    imagetemp.setImageBitmap(element); 
    gestures.addView(imagetemp); 
} 

そして、あなたのリストがビットマップが移入されていない理由を確認するためにあなたのコードの最初の部分をデバッグします。

+0

ありがとうクリスチャン。私はなぜそれが空であるか正確にはわからない。私が見ていないものがなければならない。 – Navigatron

+0

Eclipseのデバッガを使用して、コードの2つの 'for'で何が起こっているのか確認してみましたか? – Cristian

+0

私はちょうどそこにデバッガを使用してコードを試して、forループは決して実行されます。彼らはスキップされます。私はGestureBuilderActivity.javaに戻り、もう一度見ていきます。ありがとう! – Navigatron

関連する問題