代码太大,常量错误太多(Android Studio)

时间:2016-07-01 11:32:34

标签: java android android-studio javac

我遇到了一个无法解决的问题;我在网上搜索,但我没有找到一个精确的解决方案,或者至少我不太了解,我不知道。

无论如何,我有Android Studio v.2.1,这就是我想要做的事情:

首先,我创建了一个覆盖onCreate方法的SQLite数据库,而不是在同一方法的另一个覆盖中,我编写了一个方法来检查数据库是否为空;如果是真的,它将增加大约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

我该怎么办?

谢谢:)

3 个答案:

答案 0 :(得分:3)

请参阅Java "too many constants" JVM error以获取有关错误原因的说明。

我建议尝试将这些单词添加到@babadaba建议的数组中,或者将它们放在地图中,然后迭代它们。

另一种解决方案是从文件中读取它们。

答案 1 :(得分:3)

在res / values文件夹中创建一个array.xml文件,并将内容放入其中:

<?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>

然后像这样迭代:

@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();
}

答案 2 :(得分:1)

哇,你已经达到了最大常数。常量被赋予一个数字。你已经看到它了R.id.xxxxxx在你的情况下它跑出了最大值。将单词存储在文本文件资源中。读取文本文件并插入数据库。还有其他黑客你必须搜索它们与应用程序预先加载sqlite数据库。资源文本文件更容易维护,添加新单词等。