2017-08-26 63 views
-2

我正在做一个测验应用程序,它给了用户四个选项来选择from.I为每个选项创建了一个字符串数组。现在我希望从字符串中设置文本我已经写了代码,但是当我在模拟器上运行它时,它只显示了问题而不是选项按钮。请帮忙!我是一名初学者。如何在字符串数组的按钮上添加文本

public class question1 extends AppCompatActivity { 

private int Question_no; 
private Boolean Boolean_Var; 


@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_question1); 

    String[] Question_Array = getResources().getStringArray(R.array.Question1); 
    TextView Questions = (TextView) findViewById(R.id.Question); 
    Questions.setText(Question_Array[Question_no]); 

    String[] Option1_Array = getResources().getStringArray(R.array.Option_1); 
    Button Option1 = (Button) findViewById(R.id.Option1); 
    Option1.setText(Option1_Array[Question_no]); 

    String[] Option2_Array = getResources().getStringArray(R.array.Option_2); 
    Button Option2 = (Button) findViewById(R.id.Option2); 
    Option2.setText(Option2_Array[Question_no]); 

    String[] Option3_Array = getResources().getStringArray(R.array.Option_3); 
    Button Option3 = (Button) findViewById(R.id.Option3); 
    Option3.setText(Option3_Array[Question_no]); 

    String[] Option4_Array = getResources().getStringArray(R.array.Option_4); 
    Button Option4 = (Button) findViewById(R.id.Option4); 
    Option4.setText(Option4_Array[Question_no]); 

    findViewById(R.id.Menu_Button).setVisibility(View.INVISIBLE); 
    findViewById(R.id.Next_Button).setVisibility(View.INVISIBLE); 

} 

Layout.xml

<TextView 
    android:id="@+id/Question" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentTop="true" 
    android:layout_centerHorizontal="true" 
    android:layout_marginTop="46dp" 
    android:text="TextView" 
    android:gravity="center" 
    android:textSize="25dp" 
    android:textColor="#000000"/> 

<Button 
    android:id="@+id/Option1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_marginEnd="21dp" 
    android:layout_marginRight="21dp" 
    android:layout_marginTop="65dp" 
    android:text="Button" 
    android:textSize="15dp" 
    android:textColor="#000000" 
    android:layout_below="@+id/Question" 
    android:layout_toLeftOf="@+id/Question" 
    android:layout_toStartOf="@+id/Question" 
    android:onClick="On_Option1_Click"/> 

<Button 
    android:id="@+id/Option2" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignTop="@+id/Option1" 
    android:layout_marginLeft="19dp" 
    android:layout_marginStart="19dp" 
    android:textSize="15dp" 
    android:layout_toEndOf="@+id/Question" 
    android:layout_toRightOf="@+id/Question" 
    android:text="Button" /> 

<Button 
    android:id="@+id/Option3" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignLeft="@+id/Option1" 
    android:layout_alignStart="@+id/Option1" 
    android:layout_below="@+id/Option1" 
    android:textSize="15dp" 
    android:layout_marginTop="49dp" 
    android:text="Button" /> 

<Button 
    android:id="@+id/Option4" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignLeft="@+id/Option2" 
    android:layout_alignStart="@+id/Option2" 
    android:layout_alignTop="@+id/Option3" 
    android:textSize="15dp" 
    android:text="Button" /> 

<Button 
    android:id="@+id/Menu_Button" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignLeft="@+id/Option3" 
    android:layout_alignStart="@+id/Option3" 
    android:layout_below="@+id/Option3" 
    android:layout_marginLeft="37dp" 
    android:layout_marginStart="37dp" 
    android:layout_marginTop="76dp" 
    android:textSize="15dp" 
    android:text="MENU" /> 

<Button 
    android:id="@+id/Next_Button" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignTop="@+id/Menu_Button" 
    android:layout_toEndOf="@+id/Question" 
    android:layout_toRightOf="@+id/Question" 
    android:textSize="15dp" 
    android:text="NEXT" /> 

的strings.xml

<string-array name="Question1"> 
    <item> which of the foll. is a non-metal that remains liquid at room temp? </item> 
</string-array> 

<string-array name="Option_1"> 
    <item>Phosphorous</item> 
</string-array> 

<string-array name="Option_2"> 
    <item>Bromine</item> 
</string-array> 

<string-array name="Option_3"> 
    <item>Chlorine</item> 
</string-array> 

<string-array name="Option_4"> 
    <item>Helium</item> 
</string-array> 

<string-array name="Answer1"> 
    <item>Bromine</item> 
</string-array> 
+2

为什么你创建了这么多的数组?单个数组本身包含所有字符串值,因此您只能使用一个..并且可以根据数组长度将它应用于for循环 –

+0

您应该尝试将设置的文本记录到按钮以查看您是否可以正确地获取字符串数组。如果文本确认正确,请确保您使用的布局正确,以便视图中的所有UI均可见。 –

+0

我们没有布局文件,所以我们如何知道自己是什么或者没有看到? –

回答

0

好了,因为我看不到你的布局或字符串的xml文件,不可能找出你的公关oblem。但是,我已经为您编写并测试了它,并且它可以工作。我并没有完全执行你的确切实现,但它并不遥远,希望它能帮助你学习阅读并遵循这些代码。我并不是说这是以任何方式做到这一点的最好方法,而且我在一个小时左右就将它们拼凑在一起,但它起作用,并且它不显得难看:-)

strings.xml :

<resources> 
     <string name="app_name">AndroidApp</string> 
     <string-array name="questions"> 
      <item>(1) Which is your favourite of these colours?</item> 
      <item>(2) Which is your favourite of these animals?</item> 
     </string-array> 
     <string-array name="firstOptions"> 
      <item>Blue</item> 
      <item>Red</item> 
      <item>Yellow</item> 
      <item>Green</item> 
     </string-array> 
     <string-array name="secondOptions"> 
      <item>Dog</item> 
      <item>Cat</item> 
      <item>Gerbil</item> 
      <item>Bearded Dragon</item> 
     </string-array> 
    </resources> 

layout.xml:

<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:app="http://schemas.android.com/apk/res-auto" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
tools:context="com.apps.radley.mike.androidapp.MainActivity"> 

     <TextView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="Placeholder" 
    android:textSize="16sp" 
    app:layout_constraintBottom_toBottomOf="parent" 
    app:layout_constraintLeft_toLeftOf="parent" 
    app:layout_constraintRight_toRightOf="parent" 
    app:layout_constraintTop_toTopOf="parent" 
    android:id="@+id/questionView" 
    app:layout_constraintVertical_bias="0.1" /> 

     <Button 
    android:id="@+id/firstButton" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:onClick="buttonClicked" 
    android:text="Button" 
    app:layout_constraintBottom_toBottomOf="parent" 
    app:layout_constraintHorizontal_bias="0.502" 
    app:layout_constraintLeft_toLeftOf="parent" 
    app:layout_constraintRight_toRightOf="parent" 
    app:layout_constraintTop_toTopOf="parent" 
    app:layout_constraintVertical_bias="0.4" /> 

     <Button 
    android:id="@+id/secondButton" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:onClick="buttonClicked" 
    android:text="Button" 
    app:layout_constraintBottom_toBottomOf="parent" 
    app:layout_constraintHorizontal_bias="0.502" 
    app:layout_constraintLeft_toLeftOf="parent" 
    app:layout_constraintRight_toRightOf="parent" 
    app:layout_constraintTop_toTopOf="parent" 
    app:layout_constraintVertical_bias="0.5" /> 

     <Button 
    android:id="@+id/thirdButton" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:onClick="buttonClicked" 
    android:text="Button" 
    app:layout_constraintBottom_toBottomOf="parent" 
    app:layout_constraintHorizontal_bias="0.502" 
    app:layout_constraintLeft_toLeftOf="parent" 
    app:layout_constraintRight_toRightOf="parent" 
    app:layout_constraintTop_toTopOf="parent" 
    app:layout_constraintVertical_bias="0.6" /> 

     <Button 
    android:id="@+id/fourthButton" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:onClick="buttonClicked" 
    android:text="Button" 
    app:layout_constraintBottom_toBottomOf="parent" 
    app:layout_constraintHorizontal_bias="0.502" 
    app:layout_constraintLeft_toLeftOf="parent" 
    app:layout_constraintRight_toRightOf="parent" 
    app:layout_constraintTop_toTopOf="parent" 
    app:layout_constraintVertical_bias="0.7" /> 


    </android.support.constraint.ConstraintLayout> 

MainActivity.Java:

package com.apps.radley.mike.androidapp; 

    import android.support.v7.app.AppCompatActivity; 
    import android.os.Bundle; 
    import android.view.View; 
    import android.widget.Button; 
    import android.widget.TextView; 

    import java.util.ArrayList; 
    import java.util.Arrays; 
    import java.util.List; 

    public class MainActivity extends AppCompatActivity { 

     private int questionIndex; 

     private List<Button> buttons; 

     private List<List<String>> options; 

     private List<String> theQuestions; 
     private List<String> firstOptionList; 
     private List<String> secondOptionList; 

     private StringBuilder answers; 

     private TextView questionView; 

     @Override 
     protected void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.activity_main); 
      initVariables(); 
      initButtons(); 
      initOptions(); 
      updateView(); 
     } 

     private void initVariables() { 
      questionIndex = 0; 
      buttons = new ArrayList<>(); 
      options = new ArrayList<>(); 
      theQuestions = Arrays.asList(getResources().getStringArray(R.array.questions)); 
      firstOptionList = Arrays.asList(getResources().getStringArray(R.array.firstOptions)); 
      secondOptionList = Arrays.asList(getResources().getStringArray(R.array.secondOptions)); 
      answers = new StringBuilder("Answers: "); 
      questionView = (TextView) findViewById(R.id.questionView); 
     } 

     private void initOptions() { 
      options.add(firstOptionList); 
      options.add(secondOptionList); 
     } 

     private void updateView() { 
      questionView.setText(theQuestions.get(questionIndex)); 
      setButtonText(); 
     } 

     private void setButtonText() { 
      for (int i = 0; i < buttons.size(); i++) { 
       buttons.get(i).setText(options.get(questionIndex).get(i)); 
      } 
     } 

     private void initButtons() { 
      buttons.add((Button) findViewById(R.id.firstButton)); 
      buttons.add((Button) findViewById(R.id.secondButton)); 
      buttons.add((Button) findViewById(R.id.thirdButton)); 
      buttons.add((Button) findViewById(R.id.fourthButton)); 
     } 

     private void showFinalView() { 
      questionView.setText(answers.toString()); 
      for (Button button : buttons) { 
       button.setVisibility(View.INVISIBLE); 
      } 
     } 

     public void buttonClicked(View aView){ 
      answers.append(((Button) aView).getText()); 
      answers.append("; "); 
      if (questionIndex < 1) { 
       questionIndex += 1; 
       updateView(); 
      } else { 
       // We've run out of questions so... 
       showFinalView(); 
      } 
     } 
    } 

如果您检查你得到了什么,并与此相比较,并且/或者运行这个游戏并对它进行游戏并操纵它以实现自己的目标,我估计你将能够摆脱目前的困境。玩得开心,快乐学习:-)

编辑:我也跑你的代码。你的代码确实有效。这只是你的按钮都布置在彼此的顶部,因为你没有设置他们的约束。您的布局文件更改为以下内容,您将看到:

<TextView 
    android:id="@+id/Question" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentTop="true" 
    android:layout_centerHorizontal="true" 
    android:layout_marginTop="46dp" 
    android:text="TextView" 
    android:gravity="center" 
    android:textSize="25dp" 
    android:textColor="#000000"/> 

    <Button 
    android:id="@+id/Option1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_marginEnd="21dp" 
    android:layout_marginRight="21dp" 
    android:layout_marginTop="65dp" 
    android:text="Button" 
    android:textSize="15dp" 
    android:textColor="#000000" 
    android:layout_below="@+id/Question" 
    android:layout_toLeftOf="@+id/Question" 
    android:layout_toStartOf="@+id/Question" 
    android:onClick="On_Option1_Click" 
    app:layout_constraintBottom_toBottomOf="parent" 
    app:layout_constraintHorizontal_bias="0.502" 
    app:layout_constraintLeft_toLeftOf="parent" 
    app:layout_constraintRight_toRightOf="parent" 
    app:layout_constraintTop_toTopOf="parent" 
    app:layout_constraintVertical_bias="0.4" /> 

    <Button 
    android:id="@+id/Option2" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignTop="@+id/Option1" 
    android:layout_marginLeft="19dp" 
    android:layout_marginStart="19dp" 
    android:textSize="15dp" 
    android:layout_toEndOf="@+id/Question" 
    android:layout_toRightOf="@+id/Question" 
    android:text="Button" 
    app:layout_constraintBottom_toBottomOf="parent" 
    app:layout_constraintHorizontal_bias="0.502" 
    app:layout_constraintLeft_toLeftOf="parent" 
    app:layout_constraintRight_toRightOf="parent" 
    app:layout_constraintTop_toTopOf="parent" 
    app:layout_constraintVertical_bias="0.6" /> 

    <Button 
    android:id="@+id/Option3" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignLeft="@+id/Option1" 
    android:layout_alignStart="@+id/Option1" 
    android:layout_below="@+id/Option1" 
    android:textSize="15dp" 
    android:layout_marginTop="49dp" 
    android:text="Button" 
    app:layout_constraintBottom_toBottomOf="parent" 
    app:layout_constraintHorizontal_bias="0.502" 
    app:layout_constraintLeft_toLeftOf="parent" 
    app:layout_constraintRight_toRightOf="parent" 
    app:layout_constraintTop_toTopOf="parent" 
    app:layout_constraintVertical_bias="0.7" /> 

    <Button 
    android:id="@+id/Option4" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignLeft="@+id/Option2" 
    android:layout_alignStart="@+id/Option2" 
    android:layout_alignTop="@+id/Option3" 
    android:textSize="15dp" 
    android:text="Button" 
    app:layout_constraintBottom_toBottomOf="parent" 
    app:layout_constraintHorizontal_bias="0.502" 
    app:layout_constraintLeft_toLeftOf="parent" 
    app:layout_constraintRight_toRightOf="parent" 
    app:layout_constraintTop_toTopOf="parent" 
    app:layout_constraintVertical_bias="0.9" /> 

    <Button 
    android:id="@+id/Menu_Button" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignLeft="@+id/Option3" 
    android:layout_alignStart="@+id/Option3" 
    android:layout_below="@+id/Option3" 
    android:layout_marginLeft="37dp" 
    android:layout_marginStart="37dp" 
    android:layout_marginTop="76dp" 
    android:textSize="15dp" 
    android:text="MENU" /> 

    <Button 
    android:id="@+id/Next_Button" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignTop="@+id/Menu_Button" 
    android:layout_toEndOf="@+id/Question" 
    android:layout_toRightOf="@+id/Question" 
    android:textSize="15dp" 
    android:text="NEXT" /> 

这无疑作品在我的机器上反正:-)(虽然我也想好好检查的布局设置,因为我还没有真正做了很多工作但复制并粘贴视图设置,让它们进入视图)。

+0

虽然种类的建议的话,这不是问题的答案 –

+0

同意。应该把它置于评论中。如果我可以弄清楚如何在应用程序上执行此操作,我会将其移至其他位置: -/ –

+0

@ Mike Radley我已经习惯了:)但我会查找您的建议。对于初学者,我编辑了变量名称。看一看。谢谢! –

相关问题