【问题标题】:how to get strings from a string array and show it one by one in a TexttView using Buttons (android)如何从字符串数组中获取字符串并使用按钮(android)在TexttView中一一显示
【发布时间】:2017-01-18 11:16:18
【问题描述】:

我是编程新手,我的代码需要一些帮助,我正在尝试使用一些按钮在 TextView 中显示一些字符串。 大致思路是当按下“next”按钮时,会显示字符串数组中的下一个字符串,当按下“previous”按钮时,会显示字符串数组中的上一个字符串。

(到目前为止,我的代码经验仅限于 c / c++,所以如果我的代码真的搞砸了,我真的很抱歉,因为我不使用 java 代码)

这是活动:

public class MainActivity extends AppCompatActivity {
    int question_number = 0;

    String[] mTestArray;

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

        mTestArray = getResources().getStringArray(R.array.questions_array);
    }

    protected void nextQuestion()
    {
        int maxIndex = mTestArray.length;

        if(question_number == maxIndex) showResult();
        else
        {
            question_number++;
            updateTextView(question_number);
        }
    }

    protected void previousQuestion()
    {
        int minIndex = 0;
        Button btnPrevious = (Button) findViewById(R.id.btnPrevious);

        if (question_number == minIndex) btnPrevious.setEnabled(false);
        else
        {
            question_number--;
            updateTextView(question_number);
        }
    }

    private void updateTextView(int i) {
        TextView textView = (TextView)findViewById(R.id.txtQuestion);
        textView.setText(mTestArray[i]);
    }

    private void showResult()
    {
        //show result
    }
}

函数 nextQuestion 将显示字符串数组“questions_array”中的下一个字符串 函数 previousQuestion 将显示字符串数组“question_array”中的前一个字符串 并且函数 updateTextView 是在 TextView "txtQuestion" 中更改字符串的函数

这是xml文件:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity" >


    <TextView
        android:textAppearance="?android:textAppearanceLarge"
        android:textColor="@color/black"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_above="@+id/btnNext"
        android:layout_centerHorizontal="true"
        android:layout_marginBottom="78dp"
        android:id="@+id/txtQuestion"
        />

    <Button
        android:text="Previous"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/btnPrevious"
        android:onClick="previousQuestion"
        android:layout_below="@+id/txtQuestion"
        android:layout_toLeftOf="@+id/btnNext"
        android:layout_toStartOf="@+id/btnNext"
        android:layout_marginRight="62dp"
        android:layout_marginEnd="62dp" />

    <Button
        android:text="Next"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginBottom="176dp"
        android:id="@+id/btnNext"
        android:onClick="nextQuestion"
        android:layout_alignParentBottom="true"
        android:layout_alignParentRight="true"
        android:layout_alignParentEnd="true"
        android:layout_marginRight="71dp"
        android:layout_marginEnd="71dp" />

</RelativeLayout>

这是包含字符串数组的string.xml:

<resources>
    <string name="app_name">My Application</string>

    <string-array name="questions_array">
        <item>Question 1</item>
        <item>Question 2</item>
        <item>Question 3</item>
        <item>Question 4</item>
        <item>Question 5</item>
        <item>Question 6</item>
        <item>Question 7</item>
        <item>Question 8</item>
        <item>Question 9</item>
        <item>Question 10</item>
    </string-array>
</resources>

我已尝试运行该应用程序,它运行时没有错误。但是,每当我尝试单击按钮时,应用程序将自动关闭并弹出此消息窗口:

很遗憾,我的应用程序已停止

抱歉我的英语不好,感谢之前的帮助!

【问题讨论】:

  • 提示:定义一个计数器,everyOnClick 增加该值并从该索引处的数组中获取元素
  • question_number 始终为 0!您不会从计数器中添加或减去任何内容
  • 对不起,我在活动中输入了错误的 java 代码,我已经尝试使用计数器增加每一次点击,但它仍然没有工作
  • 当您的应用程序崩溃时发布您的堆栈跟踪总是更好,无论如何我仍然试图回答您的问题。如果这没有帮助,请连同错误日志一起发布。

标签: java android arrays string textview


【解决方案1】:

XML 中onClick 属性的函数必须类似于,

public void yourFunction (View view) {
    //Your code
}

由于您没有将 View 添加为函数的参数,因此您的布局永远不会到达它,因此当您单击按钮时,应用程序会崩溃。

您还需要创建一个计数器来计算您所在的索引,使其类似于成员变量int count=0;,并在下一个问题上将其设为count++;,在上一个问题上将其设为count--;

【讨论】:

  • 非常感谢!我刚刚开始编写我的第一个 android 代码,还没有研究太多东西是如何工作的
【解决方案2】:

关注这个。

List<String> aList = Arrays.asList(getResources().getStringArray(R.array.questions_array));
final ListIterator<String> listIterator = aList.listIterator();

 protected void nextQuestion()  {
    if (listIterator.hasNext()){
                textview.setText(listIterator.next());
            }
   }

  protected void previousQuestion() {
    if (listIterator.hasPrevious()){
                textview.setText(listIterator.previous());
            }
    }

【讨论】:

    【解决方案3】:
    String question[] = {"a","b","c","d","e"};
    int count = 0;
    findViewById(R.id.button).setOnClickListener(new OnClickLisetner{
     if(count<question.lenght()){
    count++;
     Log.d("Question",question[count]);
    }else{
      count=0;
     }
    });
    

    【讨论】:

      【解决方案4】:

      查看您的代码后,您未能在每次调用 nextQuestion()previousQuestion() 时递增 question_number。增加这个很可能会让你通过你的字符串数组。

      【讨论】:

      • 对不起,我把我的活动的旧副本我的错误是在我正在使用的 onClick 函数上
      【解决方案5】:

      您必须在点击nextQuestion() previousQuestion ()时维护question_number

      nextQuestion()函数中添加question_number++,在previousQuestion()函数中添加question_number--

      【讨论】:

        猜你喜欢
        • 2013-11-06
        • 2020-10-10
        • 1970-01-01
        • 1970-01-01
        • 2013-03-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-05-31
        相关资源
        最近更新 更多