【问题标题】:eclipse android setText to random Stringeclipse android setText 到随机字符串
【发布时间】:2014-02-23 16:19:16
【问题描述】:

您好,我的 Strings.xml 中有 2000 个问题,每个问题都有 3 个可能的答案。我希望在文本视图中显示一个随机问题,并带有答案。

<string name="Frage1">Was versteht man unter defensivem Fahren?</string>
<string name="ersteAntwort1">Nicht auf dem eigenen Recht bestehen</string>
<string name="zweiteAntwort1">Mit Fehlern anderer rechnen</string>
<string name="dritteAntwort1">Vorsorglich an jeder Kreuzung anhalten</string>
<string name="Frage2">Was kann zu Auffahrunfällen führen?</string>
<string name="ersteAntwort2">Unerwartet starkes Bremsen</string>
<string name="zweiteAntwort2">Unaufmerksamkeit</string>
<string name="dritteAntwort2">Zu dichtes Auffahren</string>
<string name="Frage3">Sie fahren innerorts hinter einem Fahrzeug mit ortsfremdem Kennzeichen. Was könnte geschehen?</string>
<string name="ersteAntwort3">- bremst unerwartet</string>
<string name="zweiteAntwort3">- betätigt den Blinker vor dem Abbiegen zu spät</string>
<string name="dritteAntwort3">- hält unerwartet an, um nach dem Weg zu fragen</string>  

字符串的名称总是相同的,只是问题的数量发生了变化,所以我想在字符串名称的第一部分添加一个随机数

public void neueFrage (View view) {

    Button buttonTipp = (Button)findViewById(R.id.button1);
    final TextView tw = (TextView)findViewById(R.id.textView1);
    final CheckBox Chk1 = (CheckBox)findViewById(R.id.checkBox1);
    final CheckBox Chk2 = (CheckBox)findViewById(R.id.checkBox2);
    final CheckBox Chk3 = (CheckBox)findViewById(R.id.checkBox3);
    buttonTipp.setOnClickListener(new OnClickListener() {   
        public void onClick(View v) {
            // TODO Auto-generated method stub
            int random = (int) (Math.random() *3 );
            String zahl = String.valueOf(random);
            String question = "Frage"+zahl;
            String firstAnswer ="ersteAntwort"+zahl;
            String secondAnswer = "zweiteAntwort"+zahl;
            String thirdAnswer = "dritteAntwort"+zahl;
            tw.setText(R.string.question);
            Chk1.setText(R.string.firstAnswer);
            Chk1.setText(R.string.secondAnswer);
            Chk1.setText(R.string.thirdAnswer);
                    }});    
}   

【问题讨论】:

  • 而不是使用strings.xml,你最好使用数据库......所以你的答案将与你的问题有关。只需随机选择一个问题及其相关答案。很容易。
  • 我不知道如何使用 db 来制作它,所以如果我让这段代码工作起来会快得多。这种方式应该更容易,但我不知道为什么错误出现在问题、第一个答案、第二个答案、第三个答案无法解决或不是一个字段
  • 您的方法需要创建一个巨大的数组,每个问题一个。扩展它需要代码和 xml 值。学习数据库可能更容易,这是正确的解决方案。

标签: android arrays string random android-resources


【解决方案1】:

首先,如果可以,请以适当的格式写入数据。 XML 将是一个不错的选择,您可以创建自己的 XML 格式并阅读它。 XML 格式示例如下,Android 也包含一些优秀的解析器。

<questions_list>
    <question name="Question 1?">
        <answer name="Answer 1"/>
        <answer name="Answer 2">
            <correct/>
        </answer>
        <answer name="Answer 3"/>
    </question>
</question_list>

如果这不起作用,也许字符串数组可以起作用,如下所示:

<string-array name="question1">
    <item>Question 1</item>
    <item>Answer 1</item>
    ...
</string-array>

第三种选择是将数据放入 SQLite 数据库,可能包含 5 列、问题、3 个答案和正确答案。有很多关于如何做到这一点的方法,最简单的方法是使用 Python 之类的语言来填充数据库,然后使用 SQLiteAssetHelper 之类的东西将数据库放入您的程序中。

我认为重新格式化将为您节省大量工作。 XML、数据库或其他东西,但我相信更好的格式会对您有很大帮助。

就目前而言,您不仅要直接在代码中引用问题,还要引用答案。该工具根本不适合您使用它的方式。

【讨论】:

  • 这是使用数据库的一个很好的替代方案,因为您可以拥有索引元素。 +1
猜你喜欢
  • 1970-01-01
  • 2016-06-14
  • 2011-12-08
  • 2021-05-03
  • 1970-01-01
  • 1970-01-01
  • 2020-01-12
  • 2013-03-09
  • 2011-09-07
相关资源
最近更新 更多