2016-07-01 28 views
3

解決できない問題があります。私はウェブで検索しましたが、私は正確な解決策を見つけられませんでした。少なくとも、私はよく理解していませんでした。私は分かりません。 。同じの別のオーバーライドで、より、まずコードが大きすぎ、定数が多すぎるエラー(Androidスタジオ)

私はonCreateメソッドをオーバーライドSQLiteのデータベースを作成しました:ここ

とにかく、私が持っているAndroidのスタジオV 2.1、とは私が何をしようとしているのですメソッドでは、データベースが空であるかどうかをチェックするメソッドを書きました。真の場合、約300000語が追加されます。ここ はこの部分です:

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    Database db = new Database(getApplicationContext()); 
    db.open(); 


    if (db.queryTutteParole().getCount() == 0) { 

     db.inserisciParole("pane", "no"); 
     db.inserisciParole("latte", "no"); 
     db.inserisciParole("uovo", "no"); 
     db.inserisciParole("farina", "no"); 
     db.inserisciParole("sale", "no"); 
     //and all the remaining words 

    } 

    db.close(); 
} 

明確にする:queryTutteParole()は、データベース内だと、すべてのカーソルを返し、inserisciParole()がデータベース内の値との言葉を置く方法です。

まあ、コードでエラーなし(私は唯一の5単語が置いてテストした)が、私はすべての300000+言葉を入れて、私は私のデバイス上でそれを実行しようとすると、私はこれらのエラーを持っている:

Here's the image with the errors

私は何をすべきですか?

感謝:)

+0

<?xml version="1.0" encoding="utf-8"?> <resources> <string-array name="yourArray"> <item>pane,no</item> <item>latte,no</item> <item>uovo,no</item> </string-array> </resources> 

は、このようにそれを反復処理しますエラーがどこで始まるかを確認するための単語。 – rossum

+0

投稿にSQLタグを追加してください。 –

+0

私はそれらの単語を文字列配列に追加しようとし、それを繰り返します。 – babadaba

答えて

3

あなたの解像度でarray.xmlファイルを作成/フォルダを値とこのようにそれにあなたの内容を置く:徐々に数を増やし

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    String[] yourArray = getResources().getStringArray(R.array.yourArray); 


    if (db.queryTutteParole().getCount() == 0) { 

     for (String s : yourArray) { 
      String[] splittedArray = s.split(","); 
      db.inserisciParole(splittedArray[0], splittedArray[1]); 
     } 
    } 

    db.close(); 
} 
+0

ああ、私はJavaファイルで直接配列を作ったので、ここでは同じエラーを出した理由はありますか、ありがとう、これは確かに実行されます:D – DISSENNATORE

+1

あなたにはこれ以上の問題がある場合は喜んで:)ちょうどコメントをする – babadaba

3

は、あなたがエラーを得た理由の説明のためのJava "too many constants" JVM errorを参照してください。

@babadabaが示唆しているように、単語を配列に追加しようとするか、それらをマップに配置してそれらを反復することをお勧めします。

もう1つの解決策は、ファイルからそれらを読み取ることです。

+0

配列では動作しません。はい、私はテキストファイルと一緒に行くつもりですが、@ danny117のようにします。その方法でパフォーマンスが良いからです。 – DISSENNATORE

+0

ファイルから読み込む必要があります。私は100%確信していませんが、.propertiesファイルはあなたが使いやすいかもしれません。 –

1

あなたは最大定数に達しました。定数には番号が割り当てられます。あなたはそれを見たことがありますR.id.xxxxxxあなたのケースでは、それは最大値を超えました。単語をテキストファイルリソースに格納します。テキストファイルを読み込んでデータベースに挿入します。また、他のハックがありますので、それらを検索して、アプリケーションにあらかじめロードされたsqliteデータベースを持っている必要があります。リソーステキストファイルは、新しい単語などの追加を維持するのがずっと簡単です。

関連する問題