在问卷应用程序中使用 textView 数组
Using textView arrays for questionnaire app
我想构建一个问卷类型的应用程序,其中的问题会单独显示,当用户提交答案并单击按钮时,数据将存储在上面的 textView 中,问题转到下一个问题,答案是存储在一个新的 textView 中。我很难将问题更改为下一个问题。
下面我尝试使用数组方法,但在这里都出现了错误
myTexts[0]=findViewById(R.id.question1);
myTexts[1]=findViewById(R.id.question2);
-- 和
myTexts[questionNumber].setText(mEdit.getText().toString());
questionNumber++;
完整源代码如下:
package com.example.greg;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
public class menu extends Activity {
Button mButton;
EditText mEdit;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mButton = (Button)findViewById(R.id.button);
mEdit = (EditText)findViewById(R.id.userAnswereditText);
TextView [] myTexts = new TextView[2];
myTexts[0]=findViewById(R.id.question1);
myTexts[1]=findViewById(R.id.question2);
int questionNumber = 0;
mButton.setOnClickListener(
new View.OnClickListener()
{
public void onClick(View view)
{
myTexts[questionNumber].setText(mEdit.getText().toString());
questionNumber++;
}
});
}
@Override
protected void onPause() {
// TODO Auto-generated method stub
super.onPause();
}
}
这不应该...
myTexts[0]=findViewById(R.id.question1);
改为 TextView
?...
myTexts[0]=(TextView)findViewById(R.id.question1);
那肯定会消除一个ClassCastException
要更改问题,您应该拥有可以容纳所有问题的字符串数组或字符串列表,一旦单击按钮并且答案存储在 TextView 中,您将从该数组或列表中加载下一个问题持有问题的字符串。
String [] questions;
int numberOfQuestions = 2;
然后在 onCreate() 方法中
questions=new String[numberOfQuestions];//numberOfQuestion refers to integer that holds total number of questions
questions[0]="This is first question?";
questions[1]="This is second question?";
现在在您的 view.onClickListener
mButton.setOnClickListener(
new View.OnClickListener()
{
public void onClick(View view)
{
myTexts[questionNumber].setText(mEdit.getText().toString());
questionNumber++;
//here you will have to load the next question
if(questionNumber < numberOfQuestions)
questionTextViewHolder.setText(questions[questionNumber]);
else
Toast.makeText(menu.this,"No more questions!",Toast.LENGTHLONG).show();
//Note one thing that your questionNumber variable should not increase myTexts length or questions length because if it does you will get exception
}
});
questionTextViewHolder 是您在其中显示要回答的问题的 TextView,您必须将 "questionTextViewHolder " 替换为您在其中显示问题的文本视图!
Class 如果您遵循编码约定,名称菜单的首字母应为大写。
我想构建一个问卷类型的应用程序,其中的问题会单独显示,当用户提交答案并单击按钮时,数据将存储在上面的 textView 中,问题转到下一个问题,答案是存储在一个新的 textView 中。我很难将问题更改为下一个问题。
下面我尝试使用数组方法,但在这里都出现了错误
myTexts[0]=findViewById(R.id.question1);
myTexts[1]=findViewById(R.id.question2);
-- 和
myTexts[questionNumber].setText(mEdit.getText().toString());
questionNumber++;
完整源代码如下:
package com.example.greg;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
public class menu extends Activity {
Button mButton;
EditText mEdit;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mButton = (Button)findViewById(R.id.button);
mEdit = (EditText)findViewById(R.id.userAnswereditText);
TextView [] myTexts = new TextView[2];
myTexts[0]=findViewById(R.id.question1);
myTexts[1]=findViewById(R.id.question2);
int questionNumber = 0;
mButton.setOnClickListener(
new View.OnClickListener()
{
public void onClick(View view)
{
myTexts[questionNumber].setText(mEdit.getText().toString());
questionNumber++;
}
});
}
@Override
protected void onPause() {
// TODO Auto-generated method stub
super.onPause();
}
}
这不应该...
myTexts[0]=findViewById(R.id.question1);
改为 TextView
?...
myTexts[0]=(TextView)findViewById(R.id.question1);
那肯定会消除一个ClassCastException
要更改问题,您应该拥有可以容纳所有问题的字符串数组或字符串列表,一旦单击按钮并且答案存储在 TextView 中,您将从该数组或列表中加载下一个问题持有问题的字符串。
String [] questions;
int numberOfQuestions = 2;
然后在 onCreate() 方法中
questions=new String[numberOfQuestions];//numberOfQuestion refers to integer that holds total number of questions
questions[0]="This is first question?";
questions[1]="This is second question?";
现在在您的 view.onClickListener
mButton.setOnClickListener(
new View.OnClickListener()
{
public void onClick(View view)
{
myTexts[questionNumber].setText(mEdit.getText().toString());
questionNumber++;
//here you will have to load the next question
if(questionNumber < numberOfQuestions)
questionTextViewHolder.setText(questions[questionNumber]);
else
Toast.makeText(menu.this,"No more questions!",Toast.LENGTHLONG).show();
//Note one thing that your questionNumber variable should not increase myTexts length or questions length because if it does you will get exception
}
});
questionTextViewHolder 是您在其中显示要回答的问题的 TextView,您必须将 "questionTextViewHolder " 替换为您在其中显示问题的文本视图! Class 如果您遵循编码约定,名称菜单的首字母应为大写。