Android:使用intent传递值,并在单击“上一个”按钮时匹配上一个选定的单选按钮
需要有关在单击“上一步/下一步”按钮上设置单选按钮的帮助。 我正在使用JSON对象创建一个调查问题。对于每个问题,我都创建了一个新的活动,如surveyquestion1.java、surveyquestion2.java、surveyquestion3.java、…、surveyquestion10.java。我试图在json对象中传递问题和radiobutton文本值Android:使用intent传递值,并在单击“上一个”按钮时匹配上一个选定的单选按钮,android,json,Android,Json,需要有关在单击“上一步/下一步”按钮上设置单选按钮的帮助。 我正在使用JSON对象创建一个调查问题。对于每个问题,我都创建了一个新的活动,如surveyquestion1.java、surveyquestion2.java、surveyquestion3.java、…、surveyquestion10.java。我试图在json对象中传递问题和radiobutton文本值 public class Survey { private static JSONObject survey_respons
public class Survey {
private static JSONObject survey_response = new JSONObject();
private static String TAG = "HS_" + Survey.class.getSimpleName();
public static void init_response_object(Context context) {
try {
if ((null == SaveSharedPreference.getUserResponse(context)) || (SaveSharedPreference.getUserResponse(context).length() == 0)) {
JSONArray question_array = new JSONArray();
JSONObject question = new JSONObject();
question.put("qid", 1);
question.put("type", "multiple_choice");
question.put("value", "");
question.put("textvalue", "");
question_array.put(question);
question = new JSONObject();
question.put("qid", 2);
question.put("type", "image");
question.put("value", "");
question.put("textvalue", "");
question_array.put(question);
question = new JSONObject();
question.put("qid", 3);
question.put("type", "multiple_choice");
question.put("value", "");
question.put("textvalue", "");
question_array.put(question);
question = new JSONObject();
question.put("qid", 4);
question.put("type", "multiple_choice");
question.put("value", "");
question.put("textvalue", "");
question_array.put(question);
question = new JSONObject();
question.put("qid", 5);
question.put("type", "multiple_choice");
question.put("value", "");
question.put("textvalue", "");
question_array.put(question);
question = new JSONObject();
question.put("qid", 6);
question.put("type", "multiple_choice");
question.put("value", "");
question.put("textvalue", "");
question_array.put(question);
question = new JSONObject();
question.put("qid", 7);
question.put("type", "image");
question.put("value", "");
question.put("textvalue", "");
question_array.put(question);
question = new JSONObject();
question.put("qid", 8);
question.put("type", "text");
question.put("value", "");
question.put("textvalue", "");
question_array.put(question);
question = new JSONObject();
question.put("qid", 9);
question.put("type", "multiple_choice");
question.put("value", "");
question.put("textvalue", "");
question_array.put(question);
question = new JSONObject();
question.put("qid", 10);
question.put("type", "multiple_choice");
question.put("value", "");
question.put("textvalue", "");
question_array.put(question);
survey_response.put("urn", "nill");
survey_response.put("data", question_array);
SaveSharedPreference.setUserResponse(context, survey_response.toString());
Log.d(TAG + "_SR", survey_response.toString());
}
} catch (Exception e) {
e.printStackTrace();
}
}
public static void manageAnswers(int qid, String value, Context context) {
try {
JSONObject userResponse = SaveSharedPreference.getUserResponse(context);
JSONArray questions = userResponse.getJSONArray("data");
if (1 == qid) {
JSONObject question1 = questions.getJSONObject(0);
if (qid == question1.getInt("qid")) {
if (value.equalsIgnoreCase("no")) {
JSONObject question2 = questions.getJSONObject(1);
question2.put("value", "");
question2.put("textvalue", "");
questions.put(1, question2);
JSONObject question3 = questions.getJSONObject(2);
question3.put("value", "");
question3.put("textvalue", "");
questions.put(2, question3);
JSONObject question4 = questions.getJSONObject(3);
question4.put("value", "");
question4.put("textvalue", "");
questions.put(3, question4);
Log.d(TAG, "Q1 Ans is NO, hence resetting other questions - " + questions.toString());
userResponse.put("data", questions);
SaveSharedPreference.setUserResponse(context, userResponse.toString());
} else {
Log.d(TAG, "Ans : yes");
}
} else {
Log.d(TAG, "ERROR, MISMATCH IN qid / index");
}
} else if (3 == qid) {
JSONObject question3 = questions.getJSONObject(2);
if (qid == question3.getInt("qid")) {
if (value.equalsIgnoreCase("yes")) {
JSONObject question4 = questions.getJSONObject(3);
question4.put("value", "");
question4.put("textvalue", "");
questions.put(3, question4);
JSONObject question5 = questions.getJSONObject(4);
question5.put("value", "");
question5.put("textvalue", "");
questions.put(4, question5);
Log.d(TAG, "Q3 Ans is YES, hence resetting other questions - " + questions.toString());
userResponse.put("data", questions);
SaveSharedPreference.setUserResponse(context, userResponse.toString());
} else {
Log.d(TAG, "Ans : no");
}
} else {
Log.d(TAG, "ERROR, MISMATCH IN qid / index");
}
} else if (6 == qid) {
JSONObject question6 = questions.getJSONObject(5);
if (qid == question6.getInt("qid")) {
if (value.equalsIgnoreCase("no")) {
JSONObject question7 = questions.getJSONObject(6);
question7.put("value", "");
question7.put("textvalue", "");
questions.put(6, question7);
Log.d(TAG, "Q6 Ans is NO, hence resetting other questions - " + questions.toString());
userResponse.put("data", questions);
SaveSharedPreference.setUserResponse(context, userResponse.toString());
} else {
Log.d(TAG, "Ans : yes");
}
} else {
Log.d(TAG, "ERROR, MISMATCH IN qid / index");
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
//using this as uservalue to set the radiobutton
public static String userValue(int prevQuestion,Context context) {
String textValue = null;
try {
JSONObject userVal = SaveSharedPreference.getUserResponse(context);
Log.d(TAG, "userVal:" + userVal.toString());
JSONArray userTextVal = userVal.getJSONArray("data");
Log.d(TAG, "userTextValue" + userTextVal.toString());
for (int i = 0; i < userTextVal.length(); i++) {
JSONObject us = userTextVal.getJSONObject(i);
int quet = us.getInt("qid");
if (quet == prevQuestion) {
Log.d(TAG, "qId :" + quet);
Log.d(TAG, "textvalue :" + us.getString("textvalue"));
textValue = us.getString("textvalue");
}
}
} catch (Exception e) {
e.printStackTrace();
}
return textValue;
}
public static int prev(int qid, Context context) {
int returnValue = -1;
int count;
try {
JSONArray userPos = SaveSharedPreference.getUserResponsePosition(context);
/*ArrayList<String> pos = new ArrayList<>();
for (int i = 0; i < userPos.length(); i++) {
pos.add(userPos.getString(i).trim());
}*/
// count = pos.size();
count = userPos.length();
Log.d(TAG, "userPos : " + userPos.toString());
Log.d(TAG, "count : " + count);
if (count > 0) {
// returnValue = Integer.parseInt((pos.get(count - 1)));
returnValue = (int) userPos.get(count - 1);
Log.d(TAG, "position : " + returnValue);
//resetting the position
userPos.remove(count - 1);
SaveSharedPreference.setUserResponsePosition(context, userPos.toString());
} else {
returnValue = -1;
}
} catch (Exception e) {
e.printStackTrace();
}
return returnValue;
}
public static String next(int qid, String value, Context context) {
// RESET UNWANTED ANSWERS
Survey.manageAnswers(qid, value, context);
String returnValue = "";
JSONArray positionArray = SaveSharedPreference.getUserResponsePosition(context);
if (null == positionArray || positionArray.length() > 8) {
positionArray = new JSONArray();
}
positionArray.put(qid);
SaveSharedPreference.setUserResponsePosition(context, positionArray.toString());
try {
JSONObject submitData = SaveSharedPreference.getUserResponse(context);
submitData.put("urn", SaveSharedPreference.getCurrentURN(context));
JSONArray dataArray = submitData.getJSONArray("data");
if (1 == qid) {
JSONObject question = dataArray.getJSONObject(0);
question.put("qid", qid);
question.put("type", "multiple_choice");
if (value.toLowerCase().equals("yes")) {
question.put("value", 1);
returnValue = "2";
} else if (value.toLowerCase().equals("no")) {
question.put("value", 2);
returnValue = "5";
}
dataArray.put(0, question);
question.put("textvalue", value);
} else if (2 == qid) {
JSONObject question = dataArray.getJSONObject(1);
question.put("qid", qid);
question.put("type", "image");
question.put("value", value);
returnValue = "3";
dataArray.put(1, question);
question.put("textvalue", value);
} else if (3 == qid) {
JSONObject question = dataArray.getJSONObject(2);
question.put("qid", qid);
question.put("type", "multiple_choice");
if (value.toLowerCase().equals("yes")) {
question.put("value", 3);
returnValue = "6";
} else if (value.toLowerCase().equals("no")) {
question.put("value", 4);
returnValue = "4";
}
dataArray.put(2, question);
question.put("textvalue", value);
}
.
.
.
.
.
.
.
} else if (10 == qid) {
JSONObject question = dataArray.getJSONObject(9);
question.put("qid", qid);
question.put("type", "multiple_choice");
if (value.toLowerCase().trim().equalsIgnoreCase("something")) {
question.put("value", 19);
} else if (value.toLowerCase().trim().equalsIgnoreCase("something")) {
question.put("value", 20);
} else if (value.toLowerCase().trim().equalsIgnoreCase("something")) {
question.put("value", 21);
} else if (value.toLowerCase().trim().equalsIgnoreCase("something")) {
question.put("value", 22);
} else if (value.toLowerCase().trim().equalsIgnoreCase("something")) {
question.put("value", 23);
}
returnValue = "";
dataArray.put(9, question);
question.put("textvalue", value);
}
submitData.put("data", dataArray);
SaveSharedPreference.setUserResponse(context, submitData.toString());
} catch (Exception e) {
e.printStackTrace();
}
return returnValue;
}
}
prev.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int prevQuestion = (Survey.prev(1, context));
String val=Survey.userValue(prevQuestion,context);
Log.d(TAG,"prevQusetionValue :" +val);
Log.d(TAG, "prevQuestion : " + String.valueOf(prevQuestion));
if (9 == prevQuestion) {
Intent intent = new Intent(SurveryQuestion1.this, SurveryQuestion9.class);
intent.putExtra("value",val);
startActivity(intent);
finish();
}
}
});
next.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int selectedId = radioGroup.getCheckedRadioButtonId();
if (-1 == selectedId) {
Toast.makeText(SurveryQuestion1.this, "Please answer to proceed", Toast.LENGTH_LONG).show();
} else {
radioButton = (RadioButton) findViewById(selectedId);
String answer = radioButton.getText().toString().toLowerCase().trim();
Log.d(TAG, "Answer : " + answer);
if ((null != answer) && (answer.length() > 0)) {
String nextQuestion = Survey.next(1, answer, context);
if (2 == Integer.valueOf(nextQuestion)) {
Intent intent = new Intent(SurveryQuestion1.this, SurveryQuestion2.class);
startActivity(intent);
finish();
} else if (5 == Integer.valueOf(nextQuestion)) {
Intent intent = new Intent(SurveryQuestion1.this, SurveryQuestion5.class);
startActivity(intent);
finish();
}
}
}
}
});
有些问题有由两个或多个单选按钮组成的单选按钮,其他问题有图像或文本。第一个问题有是/否单选按钮。根据是/否的单击事件,它跳转到特定活动
public class Survey {
private static JSONObject survey_response = new JSONObject();
private static String TAG = "HS_" + Survey.class.getSimpleName();
public static void init_response_object(Context context) {
try {
if ((null == SaveSharedPreference.getUserResponse(context)) || (SaveSharedPreference.getUserResponse(context).length() == 0)) {
JSONArray question_array = new JSONArray();
JSONObject question = new JSONObject();
question.put("qid", 1);
question.put("type", "multiple_choice");
question.put("value", "");
question.put("textvalue", "");
question_array.put(question);
question = new JSONObject();
question.put("qid", 2);
question.put("type", "image");
question.put("value", "");
question.put("textvalue", "");
question_array.put(question);
question = new JSONObject();
question.put("qid", 3);
question.put("type", "multiple_choice");
question.put("value", "");
question.put("textvalue", "");
question_array.put(question);
question = new JSONObject();
question.put("qid", 4);
question.put("type", "multiple_choice");
question.put("value", "");
question.put("textvalue", "");
question_array.put(question);
question = new JSONObject();
question.put("qid", 5);
question.put("type", "multiple_choice");
question.put("value", "");
question.put("textvalue", "");
question_array.put(question);
question = new JSONObject();
question.put("qid", 6);
question.put("type", "multiple_choice");
question.put("value", "");
question.put("textvalue", "");
question_array.put(question);
question = new JSONObject();
question.put("qid", 7);
question.put("type", "image");
question.put("value", "");
question.put("textvalue", "");
question_array.put(question);
question = new JSONObject();
question.put("qid", 8);
question.put("type", "text");
question.put("value", "");
question.put("textvalue", "");
question_array.put(question);
question = new JSONObject();
question.put("qid", 9);
question.put("type", "multiple_choice");
question.put("value", "");
question.put("textvalue", "");
question_array.put(question);
question = new JSONObject();
question.put("qid", 10);
question.put("type", "multiple_choice");
question.put("value", "");
question.put("textvalue", "");
question_array.put(question);
survey_response.put("urn", "nill");
survey_response.put("data", question_array);
SaveSharedPreference.setUserResponse(context, survey_response.toString());
Log.d(TAG + "_SR", survey_response.toString());
}
} catch (Exception e) {
e.printStackTrace();
}
}
public static void manageAnswers(int qid, String value, Context context) {
try {
JSONObject userResponse = SaveSharedPreference.getUserResponse(context);
JSONArray questions = userResponse.getJSONArray("data");
if (1 == qid) {
JSONObject question1 = questions.getJSONObject(0);
if (qid == question1.getInt("qid")) {
if (value.equalsIgnoreCase("no")) {
JSONObject question2 = questions.getJSONObject(1);
question2.put("value", "");
question2.put("textvalue", "");
questions.put(1, question2);
JSONObject question3 = questions.getJSONObject(2);
question3.put("value", "");
question3.put("textvalue", "");
questions.put(2, question3);
JSONObject question4 = questions.getJSONObject(3);
question4.put("value", "");
question4.put("textvalue", "");
questions.put(3, question4);
Log.d(TAG, "Q1 Ans is NO, hence resetting other questions - " + questions.toString());
userResponse.put("data", questions);
SaveSharedPreference.setUserResponse(context, userResponse.toString());
} else {
Log.d(TAG, "Ans : yes");
}
} else {
Log.d(TAG, "ERROR, MISMATCH IN qid / index");
}
} else if (3 == qid) {
JSONObject question3 = questions.getJSONObject(2);
if (qid == question3.getInt("qid")) {
if (value.equalsIgnoreCase("yes")) {
JSONObject question4 = questions.getJSONObject(3);
question4.put("value", "");
question4.put("textvalue", "");
questions.put(3, question4);
JSONObject question5 = questions.getJSONObject(4);
question5.put("value", "");
question5.put("textvalue", "");
questions.put(4, question5);
Log.d(TAG, "Q3 Ans is YES, hence resetting other questions - " + questions.toString());
userResponse.put("data", questions);
SaveSharedPreference.setUserResponse(context, userResponse.toString());
} else {
Log.d(TAG, "Ans : no");
}
} else {
Log.d(TAG, "ERROR, MISMATCH IN qid / index");
}
} else if (6 == qid) {
JSONObject question6 = questions.getJSONObject(5);
if (qid == question6.getInt("qid")) {
if (value.equalsIgnoreCase("no")) {
JSONObject question7 = questions.getJSONObject(6);
question7.put("value", "");
question7.put("textvalue", "");
questions.put(6, question7);
Log.d(TAG, "Q6 Ans is NO, hence resetting other questions - " + questions.toString());
userResponse.put("data", questions);
SaveSharedPreference.setUserResponse(context, userResponse.toString());
} else {
Log.d(TAG, "Ans : yes");
}
} else {
Log.d(TAG, "ERROR, MISMATCH IN qid / index");
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
//using this as uservalue to set the radiobutton
public static String userValue(int prevQuestion,Context context) {
String textValue = null;
try {
JSONObject userVal = SaveSharedPreference.getUserResponse(context);
Log.d(TAG, "userVal:" + userVal.toString());
JSONArray userTextVal = userVal.getJSONArray("data");
Log.d(TAG, "userTextValue" + userTextVal.toString());
for (int i = 0; i < userTextVal.length(); i++) {
JSONObject us = userTextVal.getJSONObject(i);
int quet = us.getInt("qid");
if (quet == prevQuestion) {
Log.d(TAG, "qId :" + quet);
Log.d(TAG, "textvalue :" + us.getString("textvalue"));
textValue = us.getString("textvalue");
}
}
} catch (Exception e) {
e.printStackTrace();
}
return textValue;
}
public static int prev(int qid, Context context) {
int returnValue = -1;
int count;
try {
JSONArray userPos = SaveSharedPreference.getUserResponsePosition(context);
/*ArrayList<String> pos = new ArrayList<>();
for (int i = 0; i < userPos.length(); i++) {
pos.add(userPos.getString(i).trim());
}*/
// count = pos.size();
count = userPos.length();
Log.d(TAG, "userPos : " + userPos.toString());
Log.d(TAG, "count : " + count);
if (count > 0) {
// returnValue = Integer.parseInt((pos.get(count - 1)));
returnValue = (int) userPos.get(count - 1);
Log.d(TAG, "position : " + returnValue);
//resetting the position
userPos.remove(count - 1);
SaveSharedPreference.setUserResponsePosition(context, userPos.toString());
} else {
returnValue = -1;
}
} catch (Exception e) {
e.printStackTrace();
}
return returnValue;
}
public static String next(int qid, String value, Context context) {
// RESET UNWANTED ANSWERS
Survey.manageAnswers(qid, value, context);
String returnValue = "";
JSONArray positionArray = SaveSharedPreference.getUserResponsePosition(context);
if (null == positionArray || positionArray.length() > 8) {
positionArray = new JSONArray();
}
positionArray.put(qid);
SaveSharedPreference.setUserResponsePosition(context, positionArray.toString());
try {
JSONObject submitData = SaveSharedPreference.getUserResponse(context);
submitData.put("urn", SaveSharedPreference.getCurrentURN(context));
JSONArray dataArray = submitData.getJSONArray("data");
if (1 == qid) {
JSONObject question = dataArray.getJSONObject(0);
question.put("qid", qid);
question.put("type", "multiple_choice");
if (value.toLowerCase().equals("yes")) {
question.put("value", 1);
returnValue = "2";
} else if (value.toLowerCase().equals("no")) {
question.put("value", 2);
returnValue = "5";
}
dataArray.put(0, question);
question.put("textvalue", value);
} else if (2 == qid) {
JSONObject question = dataArray.getJSONObject(1);
question.put("qid", qid);
question.put("type", "image");
question.put("value", value);
returnValue = "3";
dataArray.put(1, question);
question.put("textvalue", value);
} else if (3 == qid) {
JSONObject question = dataArray.getJSONObject(2);
question.put("qid", qid);
question.put("type", "multiple_choice");
if (value.toLowerCase().equals("yes")) {
question.put("value", 3);
returnValue = "6";
} else if (value.toLowerCase().equals("no")) {
question.put("value", 4);
returnValue = "4";
}
dataArray.put(2, question);
question.put("textvalue", value);
}
.
.
.
.
.
.
.
} else if (10 == qid) {
JSONObject question = dataArray.getJSONObject(9);
question.put("qid", qid);
question.put("type", "multiple_choice");
if (value.toLowerCase().trim().equalsIgnoreCase("something")) {
question.put("value", 19);
} else if (value.toLowerCase().trim().equalsIgnoreCase("something")) {
question.put("value", 20);
} else if (value.toLowerCase().trim().equalsIgnoreCase("something")) {
question.put("value", 21);
} else if (value.toLowerCase().trim().equalsIgnoreCase("something")) {
question.put("value", 22);
} else if (value.toLowerCase().trim().equalsIgnoreCase("something")) {
question.put("value", 23);
}
returnValue = "";
dataArray.put(9, question);
question.put("textvalue", value);
}
submitData.put("data", dataArray);
SaveSharedPreference.setUserResponse(context, submitData.toString());
} catch (Exception e) {
e.printStackTrace();
}
return returnValue;
}
}
prev.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int prevQuestion = (Survey.prev(1, context));
String val=Survey.userValue(prevQuestion,context);
Log.d(TAG,"prevQusetionValue :" +val);
Log.d(TAG, "prevQuestion : " + String.valueOf(prevQuestion));
if (9 == prevQuestion) {
Intent intent = new Intent(SurveryQuestion1.this, SurveryQuestion9.class);
intent.putExtra("value",val);
startActivity(intent);
finish();
}
}
});
next.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int selectedId = radioGroup.getCheckedRadioButtonId();
if (-1 == selectedId) {
Toast.makeText(SurveryQuestion1.this, "Please answer to proceed", Toast.LENGTH_LONG).show();
} else {
radioButton = (RadioButton) findViewById(selectedId);
String answer = radioButton.getText().toString().toLowerCase().trim();
Log.d(TAG, "Answer : " + answer);
if ((null != answer) && (answer.length() > 0)) {
String nextQuestion = Survey.next(1, answer, context);
if (2 == Integer.valueOf(nextQuestion)) {
Intent intent = new Intent(SurveryQuestion1.this, SurveryQuestion2.class);
startActivity(intent);
finish();
} else if (5 == Integer.valueOf(nextQuestion)) {
Intent intent = new Intent(SurveryQuestion1.this, SurveryQuestion5.class);
startActivity(intent);
finish();
}
}
}
}
});
我想使用intent传递值,并在单击next/prev按钮时匹配上一个选中的单选按钮。有人能给我一个提示或示例吗
public class Survey {
private static JSONObject survey_response = new JSONObject();
private static String TAG = "HS_" + Survey.class.getSimpleName();
public static void init_response_object(Context context) {
try {
if ((null == SaveSharedPreference.getUserResponse(context)) || (SaveSharedPreference.getUserResponse(context).length() == 0)) {
JSONArray question_array = new JSONArray();
JSONObject question = new JSONObject();
question.put("qid", 1);
question.put("type", "multiple_choice");
question.put("value", "");
question.put("textvalue", "");
question_array.put(question);
question = new JSONObject();
question.put("qid", 2);
question.put("type", "image");
question.put("value", "");
question.put("textvalue", "");
question_array.put(question);
question = new JSONObject();
question.put("qid", 3);
question.put("type", "multiple_choice");
question.put("value", "");
question.put("textvalue", "");
question_array.put(question);
question = new JSONObject();
question.put("qid", 4);
question.put("type", "multiple_choice");
question.put("value", "");
question.put("textvalue", "");
question_array.put(question);
question = new JSONObject();
question.put("qid", 5);
question.put("type", "multiple_choice");
question.put("value", "");
question.put("textvalue", "");
question_array.put(question);
question = new JSONObject();
question.put("qid", 6);
question.put("type", "multiple_choice");
question.put("value", "");
question.put("textvalue", "");
question_array.put(question);
question = new JSONObject();
question.put("qid", 7);
question.put("type", "image");
question.put("value", "");
question.put("textvalue", "");
question_array.put(question);
question = new JSONObject();
question.put("qid", 8);
question.put("type", "text");
question.put("value", "");
question.put("textvalue", "");
question_array.put(question);
question = new JSONObject();
question.put("qid", 9);
question.put("type", "multiple_choice");
question.put("value", "");
question.put("textvalue", "");
question_array.put(question);
question = new JSONObject();
question.put("qid", 10);
question.put("type", "multiple_choice");
question.put("value", "");
question.put("textvalue", "");
question_array.put(question);
survey_response.put("urn", "nill");
survey_response.put("data", question_array);
SaveSharedPreference.setUserResponse(context, survey_response.toString());
Log.d(TAG + "_SR", survey_response.toString());
}
} catch (Exception e) {
e.printStackTrace();
}
}
public static void manageAnswers(int qid, String value, Context context) {
try {
JSONObject userResponse = SaveSharedPreference.getUserResponse(context);
JSONArray questions = userResponse.getJSONArray("data");
if (1 == qid) {
JSONObject question1 = questions.getJSONObject(0);
if (qid == question1.getInt("qid")) {
if (value.equalsIgnoreCase("no")) {
JSONObject question2 = questions.getJSONObject(1);
question2.put("value", "");
question2.put("textvalue", "");
questions.put(1, question2);
JSONObject question3 = questions.getJSONObject(2);
question3.put("value", "");
question3.put("textvalue", "");
questions.put(2, question3);
JSONObject question4 = questions.getJSONObject(3);
question4.put("value", "");
question4.put("textvalue", "");
questions.put(3, question4);
Log.d(TAG, "Q1 Ans is NO, hence resetting other questions - " + questions.toString());
userResponse.put("data", questions);
SaveSharedPreference.setUserResponse(context, userResponse.toString());
} else {
Log.d(TAG, "Ans : yes");
}
} else {
Log.d(TAG, "ERROR, MISMATCH IN qid / index");
}
} else if (3 == qid) {
JSONObject question3 = questions.getJSONObject(2);
if (qid == question3.getInt("qid")) {
if (value.equalsIgnoreCase("yes")) {
JSONObject question4 = questions.getJSONObject(3);
question4.put("value", "");
question4.put("textvalue", "");
questions.put(3, question4);
JSONObject question5 = questions.getJSONObject(4);
question5.put("value", "");
question5.put("textvalue", "");
questions.put(4, question5);
Log.d(TAG, "Q3 Ans is YES, hence resetting other questions - " + questions.toString());
userResponse.put("data", questions);
SaveSharedPreference.setUserResponse(context, userResponse.toString());
} else {
Log.d(TAG, "Ans : no");
}
} else {
Log.d(TAG, "ERROR, MISMATCH IN qid / index");
}
} else if (6 == qid) {
JSONObject question6 = questions.getJSONObject(5);
if (qid == question6.getInt("qid")) {
if (value.equalsIgnoreCase("no")) {
JSONObject question7 = questions.getJSONObject(6);
question7.put("value", "");
question7.put("textvalue", "");
questions.put(6, question7);
Log.d(TAG, "Q6 Ans is NO, hence resetting other questions - " + questions.toString());
userResponse.put("data", questions);
SaveSharedPreference.setUserResponse(context, userResponse.toString());
} else {
Log.d(TAG, "Ans : yes");
}
} else {
Log.d(TAG, "ERROR, MISMATCH IN qid / index");
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
//using this as uservalue to set the radiobutton
public static String userValue(int prevQuestion,Context context) {
String textValue = null;
try {
JSONObject userVal = SaveSharedPreference.getUserResponse(context);
Log.d(TAG, "userVal:" + userVal.toString());
JSONArray userTextVal = userVal.getJSONArray("data");
Log.d(TAG, "userTextValue" + userTextVal.toString());
for (int i = 0; i < userTextVal.length(); i++) {
JSONObject us = userTextVal.getJSONObject(i);
int quet = us.getInt("qid");
if (quet == prevQuestion) {
Log.d(TAG, "qId :" + quet);
Log.d(TAG, "textvalue :" + us.getString("textvalue"));
textValue = us.getString("textvalue");
}
}
} catch (Exception e) {
e.printStackTrace();
}
return textValue;
}
public static int prev(int qid, Context context) {
int returnValue = -1;
int count;
try {
JSONArray userPos = SaveSharedPreference.getUserResponsePosition(context);
/*ArrayList<String> pos = new ArrayList<>();
for (int i = 0; i < userPos.length(); i++) {
pos.add(userPos.getString(i).trim());
}*/
// count = pos.size();
count = userPos.length();
Log.d(TAG, "userPos : " + userPos.toString());
Log.d(TAG, "count : " + count);
if (count > 0) {
// returnValue = Integer.parseInt((pos.get(count - 1)));
returnValue = (int) userPos.get(count - 1);
Log.d(TAG, "position : " + returnValue);
//resetting the position
userPos.remove(count - 1);
SaveSharedPreference.setUserResponsePosition(context, userPos.toString());
} else {
returnValue = -1;
}
} catch (Exception e) {
e.printStackTrace();
}
return returnValue;
}
public static String next(int qid, String value, Context context) {
// RESET UNWANTED ANSWERS
Survey.manageAnswers(qid, value, context);
String returnValue = "";
JSONArray positionArray = SaveSharedPreference.getUserResponsePosition(context);
if (null == positionArray || positionArray.length() > 8) {
positionArray = new JSONArray();
}
positionArray.put(qid);
SaveSharedPreference.setUserResponsePosition(context, positionArray.toString());
try {
JSONObject submitData = SaveSharedPreference.getUserResponse(context);
submitData.put("urn", SaveSharedPreference.getCurrentURN(context));
JSONArray dataArray = submitData.getJSONArray("data");
if (1 == qid) {
JSONObject question = dataArray.getJSONObject(0);
question.put("qid", qid);
question.put("type", "multiple_choice");
if (value.toLowerCase().equals("yes")) {
question.put("value", 1);
returnValue = "2";
} else if (value.toLowerCase().equals("no")) {
question.put("value", 2);
returnValue = "5";
}
dataArray.put(0, question);
question.put("textvalue", value);
} else if (2 == qid) {
JSONObject question = dataArray.getJSONObject(1);
question.put("qid", qid);
question.put("type", "image");
question.put("value", value);
returnValue = "3";
dataArray.put(1, question);
question.put("textvalue", value);
} else if (3 == qid) {
JSONObject question = dataArray.getJSONObject(2);
question.put("qid", qid);
question.put("type", "multiple_choice");
if (value.toLowerCase().equals("yes")) {
question.put("value", 3);
returnValue = "6";
} else if (value.toLowerCase().equals("no")) {
question.put("value", 4);
returnValue = "4";
}
dataArray.put(2, question);
question.put("textvalue", value);
}
.
.
.
.
.
.
.
} else if (10 == qid) {
JSONObject question = dataArray.getJSONObject(9);
question.put("qid", qid);
question.put("type", "multiple_choice");
if (value.toLowerCase().trim().equalsIgnoreCase("something")) {
question.put("value", 19);
} else if (value.toLowerCase().trim().equalsIgnoreCase("something")) {
question.put("value", 20);
} else if (value.toLowerCase().trim().equalsIgnoreCase("something")) {
question.put("value", 21);
} else if (value.toLowerCase().trim().equalsIgnoreCase("something")) {
question.put("value", 22);
} else if (value.toLowerCase().trim().equalsIgnoreCase("something")) {
question.put("value", 23);
}
returnValue = "";
dataArray.put(9, question);
question.put("textvalue", value);
}
submitData.put("data", dataArray);
SaveSharedPreference.setUserResponse(context, submitData.toString());
} catch (Exception e) {
e.printStackTrace();
}
return returnValue;
}
}
prev.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int prevQuestion = (Survey.prev(1, context));
String val=Survey.userValue(prevQuestion,context);
Log.d(TAG,"prevQusetionValue :" +val);
Log.d(TAG, "prevQuestion : " + String.valueOf(prevQuestion));
if (9 == prevQuestion) {
Intent intent = new Intent(SurveryQuestion1.this, SurveryQuestion9.class);
intent.putExtra("value",val);
startActivity(intent);
finish();
}
}
});
next.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int selectedId = radioGroup.getCheckedRadioButtonId();
if (-1 == selectedId) {
Toast.makeText(SurveryQuestion1.this, "Please answer to proceed", Toast.LENGTH_LONG).show();
} else {
radioButton = (RadioButton) findViewById(selectedId);
String answer = radioButton.getText().toString().toLowerCase().trim();
Log.d(TAG, "Answer : " + answer);
if ((null != answer) && (answer.length() > 0)) {
String nextQuestion = Survey.next(1, answer, context);
if (2 == Integer.valueOf(nextQuestion)) {
Intent intent = new Intent(SurveryQuestion1.this, SurveryQuestion2.class);
startActivity(intent);
finish();
} else if (5 == Integer.valueOf(nextQuestion)) {
Intent intent = new Intent(SurveryQuestion1.this, SurveryQuestion5.class);
startActivity(intent);
finish();
}
}
}
}
});
//Surveyquetion.java
public class Survey {
private static JSONObject survey_response = new JSONObject();
private static String TAG = "HS_" + Survey.class.getSimpleName();
public static void init_response_object(Context context) {
try {
if ((null == SaveSharedPreference.getUserResponse(context)) || (SaveSharedPreference.getUserResponse(context).length() == 0)) {
JSONArray question_array = new JSONArray();
JSONObject question = new JSONObject();
question.put("qid", 1);
question.put("type", "multiple_choice");
question.put("value", "");
question.put("textvalue", "");
question_array.put(question);
question = new JSONObject();
question.put("qid", 2);
question.put("type", "image");
question.put("value", "");
question.put("textvalue", "");
question_array.put(question);
question = new JSONObject();
question.put("qid", 3);
question.put("type", "multiple_choice");
question.put("value", "");
question.put("textvalue", "");
question_array.put(question);
question = new JSONObject();
question.put("qid", 4);
question.put("type", "multiple_choice");
question.put("value", "");
question.put("textvalue", "");
question_array.put(question);
question = new JSONObject();
question.put("qid", 5);
question.put("type", "multiple_choice");
question.put("value", "");
question.put("textvalue", "");
question_array.put(question);
question = new JSONObject();
question.put("qid", 6);
question.put("type", "multiple_choice");
question.put("value", "");
question.put("textvalue", "");
question_array.put(question);
question = new JSONObject();
question.put("qid", 7);
question.put("type", "image");
question.put("value", "");
question.put("textvalue", "");
question_array.put(question);
question = new JSONObject();
question.put("qid", 8);
question.put("type", "text");
question.put("value", "");
question.put("textvalue", "");
question_array.put(question);
question = new JSONObject();
question.put("qid", 9);
question.put("type", "multiple_choice");
question.put("value", "");
question.put("textvalue", "");
question_array.put(question);
question = new JSONObject();
question.put("qid", 10);
question.put("type", "multiple_choice");
question.put("value", "");
question.put("textvalue", "");
question_array.put(question);
survey_response.put("urn", "nill");
survey_response.put("data", question_array);
SaveSharedPreference.setUserResponse(context, survey_response.toString());
Log.d(TAG + "_SR", survey_response.toString());
}
} catch (Exception e) {
e.printStackTrace();
}
}
public static void manageAnswers(int qid, String value, Context context) {
try {
JSONObject userResponse = SaveSharedPreference.getUserResponse(context);
JSONArray questions = userResponse.getJSONArray("data");
if (1 == qid) {
JSONObject question1 = questions.getJSONObject(0);
if (qid == question1.getInt("qid")) {
if (value.equalsIgnoreCase("no")) {
JSONObject question2 = questions.getJSONObject(1);
question2.put("value", "");
question2.put("textvalue", "");
questions.put(1, question2);
JSONObject question3 = questions.getJSONObject(2);
question3.put("value", "");
question3.put("textvalue", "");
questions.put(2, question3);
JSONObject question4 = questions.getJSONObject(3);
question4.put("value", "");
question4.put("textvalue", "");
questions.put(3, question4);
Log.d(TAG, "Q1 Ans is NO, hence resetting other questions - " + questions.toString());
userResponse.put("data", questions);
SaveSharedPreference.setUserResponse(context, userResponse.toString());
} else {
Log.d(TAG, "Ans : yes");
}
} else {
Log.d(TAG, "ERROR, MISMATCH IN qid / index");
}
} else if (3 == qid) {
JSONObject question3 = questions.getJSONObject(2);
if (qid == question3.getInt("qid")) {
if (value.equalsIgnoreCase("yes")) {
JSONObject question4 = questions.getJSONObject(3);
question4.put("value", "");
question4.put("textvalue", "");
questions.put(3, question4);
JSONObject question5 = questions.getJSONObject(4);
question5.put("value", "");
question5.put("textvalue", "");
questions.put(4, question5);
Log.d(TAG, "Q3 Ans is YES, hence resetting other questions - " + questions.toString());
userResponse.put("data", questions);
SaveSharedPreference.setUserResponse(context, userResponse.toString());
} else {
Log.d(TAG, "Ans : no");
}
} else {
Log.d(TAG, "ERROR, MISMATCH IN qid / index");
}
} else if (6 == qid) {
JSONObject question6 = questions.getJSONObject(5);
if (qid == question6.getInt("qid")) {
if (value.equalsIgnoreCase("no")) {
JSONObject question7 = questions.getJSONObject(6);
question7.put("value", "");
question7.put("textvalue", "");
questions.put(6, question7);
Log.d(TAG, "Q6 Ans is NO, hence resetting other questions - " + questions.toString());
userResponse.put("data", questions);
SaveSharedPreference.setUserResponse(context, userResponse.toString());
} else {
Log.d(TAG, "Ans : yes");
}
} else {
Log.d(TAG, "ERROR, MISMATCH IN qid / index");
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
//using this as uservalue to set the radiobutton
public static String userValue(int prevQuestion,Context context) {
String textValue = null;
try {
JSONObject userVal = SaveSharedPreference.getUserResponse(context);
Log.d(TAG, "userVal:" + userVal.toString());
JSONArray userTextVal = userVal.getJSONArray("data");
Log.d(TAG, "userTextValue" + userTextVal.toString());
for (int i = 0; i < userTextVal.length(); i++) {
JSONObject us = userTextVal.getJSONObject(i);
int quet = us.getInt("qid");
if (quet == prevQuestion) {
Log.d(TAG, "qId :" + quet);
Log.d(TAG, "textvalue :" + us.getString("textvalue"));
textValue = us.getString("textvalue");
}
}
} catch (Exception e) {
e.printStackTrace();
}
return textValue;
}
public static int prev(int qid, Context context) {
int returnValue = -1;
int count;
try {
JSONArray userPos = SaveSharedPreference.getUserResponsePosition(context);
/*ArrayList<String> pos = new ArrayList<>();
for (int i = 0; i < userPos.length(); i++) {
pos.add(userPos.getString(i).trim());
}*/
// count = pos.size();
count = userPos.length();
Log.d(TAG, "userPos : " + userPos.toString());
Log.d(TAG, "count : " + count);
if (count > 0) {
// returnValue = Integer.parseInt((pos.get(count - 1)));
returnValue = (int) userPos.get(count - 1);
Log.d(TAG, "position : " + returnValue);
//resetting the position
userPos.remove(count - 1);
SaveSharedPreference.setUserResponsePosition(context, userPos.toString());
} else {
returnValue = -1;
}
} catch (Exception e) {
e.printStackTrace();
}
return returnValue;
}
public static String next(int qid, String value, Context context) {
// RESET UNWANTED ANSWERS
Survey.manageAnswers(qid, value, context);
String returnValue = "";
JSONArray positionArray = SaveSharedPreference.getUserResponsePosition(context);
if (null == positionArray || positionArray.length() > 8) {
positionArray = new JSONArray();
}
positionArray.put(qid);
SaveSharedPreference.setUserResponsePosition(context, positionArray.toString());
try {
JSONObject submitData = SaveSharedPreference.getUserResponse(context);
submitData.put("urn", SaveSharedPreference.getCurrentURN(context));
JSONArray dataArray = submitData.getJSONArray("data");
if (1 == qid) {
JSONObject question = dataArray.getJSONObject(0);
question.put("qid", qid);
question.put("type", "multiple_choice");
if (value.toLowerCase().equals("yes")) {
question.put("value", 1);
returnValue = "2";
} else if (value.toLowerCase().equals("no")) {
question.put("value", 2);
returnValue = "5";
}
dataArray.put(0, question);
question.put("textvalue", value);
} else if (2 == qid) {
JSONObject question = dataArray.getJSONObject(1);
question.put("qid", qid);
question.put("type", "image");
question.put("value", value);
returnValue = "3";
dataArray.put(1, question);
question.put("textvalue", value);
} else if (3 == qid) {
JSONObject question = dataArray.getJSONObject(2);
question.put("qid", qid);
question.put("type", "multiple_choice");
if (value.toLowerCase().equals("yes")) {
question.put("value", 3);
returnValue = "6";
} else if (value.toLowerCase().equals("no")) {
question.put("value", 4);
returnValue = "4";
}
dataArray.put(2, question);
question.put("textvalue", value);
}
.
.
.
.
.
.
.
} else if (10 == qid) {
JSONObject question = dataArray.getJSONObject(9);
question.put("qid", qid);
question.put("type", "multiple_choice");
if (value.toLowerCase().trim().equalsIgnoreCase("something")) {
question.put("value", 19);
} else if (value.toLowerCase().trim().equalsIgnoreCase("something")) {
question.put("value", 20);
} else if (value.toLowerCase().trim().equalsIgnoreCase("something")) {
question.put("value", 21);
} else if (value.toLowerCase().trim().equalsIgnoreCase("something")) {
question.put("value", 22);
} else if (value.toLowerCase().trim().equalsIgnoreCase("something")) {
question.put("value", 23);
}
returnValue = "";
dataArray.put(9, question);
question.put("textvalue", value);
}
submitData.put("data", dataArray);
SaveSharedPreference.setUserResponse(context, submitData.toString());
} catch (Exception e) {
e.printStackTrace();
}
return returnValue;
}
}
prev.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int prevQuestion = (Survey.prev(1, context));
String val=Survey.userValue(prevQuestion,context);
Log.d(TAG,"prevQusetionValue :" +val);
Log.d(TAG, "prevQuestion : " + String.valueOf(prevQuestion));
if (9 == prevQuestion) {
Intent intent = new Intent(SurveryQuestion1.this, SurveryQuestion9.class);
intent.putExtra("value",val);
startActivity(intent);
finish();
}
}
});
next.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int selectedId = radioGroup.getCheckedRadioButtonId();
if (-1 == selectedId) {
Toast.makeText(SurveryQuestion1.this, "Please answer to proceed", Toast.LENGTH_LONG).show();
} else {
radioButton = (RadioButton) findViewById(selectedId);
String answer = radioButton.getText().toString().toLowerCase().trim();
Log.d(TAG, "Answer : " + answer);
if ((null != answer) && (answer.length() > 0)) {
String nextQuestion = Survey.next(1, answer, context);
if (2 == Integer.valueOf(nextQuestion)) {
Intent intent = new Intent(SurveryQuestion1.this, SurveryQuestion2.class);
startActivity(intent);
finish();
} else if (5 == Integer.valueOf(nextQuestion)) {
Intent intent = new Intent(SurveryQuestion1.this, SurveryQuestion5.class);
startActivity(intent);
finish();
}
}
}
}
});
//SavedPreferences.java
public class Survey {
private static JSONObject survey_response = new JSONObject();
private static String TAG = "HS_" + Survey.class.getSimpleName();
public static void init_response_object(Context context) {
try {
if ((null == SaveSharedPreference.getUserResponse(context)) || (SaveSharedPreference.getUserResponse(context).length() == 0)) {
JSONArray question_array = new JSONArray();
JSONObject question = new JSONObject();
question.put("qid", 1);
question.put("type", "multiple_choice");
question.put("value", "");
question.put("textvalue", "");
question_array.put(question);
question = new JSONObject();
question.put("qid", 2);
question.put("type", "image");
question.put("value", "");
question.put("textvalue", "");
question_array.put(question);
question = new JSONObject();
question.put("qid", 3);
question.put("type", "multiple_choice");
question.put("value", "");
question.put("textvalue", "");
question_array.put(question);
question = new JSONObject();
question.put("qid", 4);
question.put("type", "multiple_choice");
question.put("value", "");
question.put("textvalue", "");
question_array.put(question);
question = new JSONObject();
question.put("qid", 5);
question.put("type", "multiple_choice");
question.put("value", "");
question.put("textvalue", "");
question_array.put(question);
question = new JSONObject();
question.put("qid", 6);
question.put("type", "multiple_choice");
question.put("value", "");
question.put("textvalue", "");
question_array.put(question);
question = new JSONObject();
question.put("qid", 7);
question.put("type", "image");
question.put("value", "");
question.put("textvalue", "");
question_array.put(question);
question = new JSONObject();
question.put("qid", 8);
question.put("type", "text");
question.put("value", "");
question.put("textvalue", "");
question_array.put(question);
question = new JSONObject();
question.put("qid", 9);
question.put("type", "multiple_choice");
question.put("value", "");
question.put("textvalue", "");
question_array.put(question);
question = new JSONObject();
question.put("qid", 10);
question.put("type", "multiple_choice");
question.put("value", "");
question.put("textvalue", "");
question_array.put(question);
survey_response.put("urn", "nill");
survey_response.put("data", question_array);
SaveSharedPreference.setUserResponse(context, survey_response.toString());
Log.d(TAG + "_SR", survey_response.toString());
}
} catch (Exception e) {
e.printStackTrace();
}
}
public static void manageAnswers(int qid, String value, Context context) {
try {
JSONObject userResponse = SaveSharedPreference.getUserResponse(context);
JSONArray questions = userResponse.getJSONArray("data");
if (1 == qid) {
JSONObject question1 = questions.getJSONObject(0);
if (qid == question1.getInt("qid")) {
if (value.equalsIgnoreCase("no")) {
JSONObject question2 = questions.getJSONObject(1);
question2.put("value", "");
question2.put("textvalue", "");
questions.put(1, question2);
JSONObject question3 = questions.getJSONObject(2);
question3.put("value", "");
question3.put("textvalue", "");
questions.put(2, question3);
JSONObject question4 = questions.getJSONObject(3);
question4.put("value", "");
question4.put("textvalue", "");
questions.put(3, question4);
Log.d(TAG, "Q1 Ans is NO, hence resetting other questions - " + questions.toString());
userResponse.put("data", questions);
SaveSharedPreference.setUserResponse(context, userResponse.toString());
} else {
Log.d(TAG, "Ans : yes");
}
} else {
Log.d(TAG, "ERROR, MISMATCH IN qid / index");
}
} else if (3 == qid) {
JSONObject question3 = questions.getJSONObject(2);
if (qid == question3.getInt("qid")) {
if (value.equalsIgnoreCase("yes")) {
JSONObject question4 = questions.getJSONObject(3);
question4.put("value", "");
question4.put("textvalue", "");
questions.put(3, question4);
JSONObject question5 = questions.getJSONObject(4);
question5.put("value", "");
question5.put("textvalue", "");
questions.put(4, question5);
Log.d(TAG, "Q3 Ans is YES, hence resetting other questions - " + questions.toString());
userResponse.put("data", questions);
SaveSharedPreference.setUserResponse(context, userResponse.toString());
} else {
Log.d(TAG, "Ans : no");
}
} else {
Log.d(TAG, "ERROR, MISMATCH IN qid / index");
}
} else if (6 == qid) {
JSONObject question6 = questions.getJSONObject(5);
if (qid == question6.getInt("qid")) {
if (value.equalsIgnoreCase("no")) {
JSONObject question7 = questions.getJSONObject(6);
question7.put("value", "");
question7.put("textvalue", "");
questions.put(6, question7);
Log.d(TAG, "Q6 Ans is NO, hence resetting other questions - " + questions.toString());
userResponse.put("data", questions);
SaveSharedPreference.setUserResponse(context, userResponse.toString());
} else {
Log.d(TAG, "Ans : yes");
}
} else {
Log.d(TAG, "ERROR, MISMATCH IN qid / index");
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
//using this as uservalue to set the radiobutton
public static String userValue(int prevQuestion,Context context) {
String textValue = null;
try {
JSONObject userVal = SaveSharedPreference.getUserResponse(context);
Log.d(TAG, "userVal:" + userVal.toString());
JSONArray userTextVal = userVal.getJSONArray("data");
Log.d(TAG, "userTextValue" + userTextVal.toString());
for (int i = 0; i < userTextVal.length(); i++) {
JSONObject us = userTextVal.getJSONObject(i);
int quet = us.getInt("qid");
if (quet == prevQuestion) {
Log.d(TAG, "qId :" + quet);
Log.d(TAG, "textvalue :" + us.getString("textvalue"));
textValue = us.getString("textvalue");
}
}
} catch (Exception e) {
e.printStackTrace();
}
return textValue;
}
public static int prev(int qid, Context context) {
int returnValue = -1;
int count;
try {
JSONArray userPos = SaveSharedPreference.getUserResponsePosition(context);
/*ArrayList<String> pos = new ArrayList<>();
for (int i = 0; i < userPos.length(); i++) {
pos.add(userPos.getString(i).trim());
}*/
// count = pos.size();
count = userPos.length();
Log.d(TAG, "userPos : " + userPos.toString());
Log.d(TAG, "count : " + count);
if (count > 0) {
// returnValue = Integer.parseInt((pos.get(count - 1)));
returnValue = (int) userPos.get(count - 1);
Log.d(TAG, "position : " + returnValue);
//resetting the position
userPos.remove(count - 1);
SaveSharedPreference.setUserResponsePosition(context, userPos.toString());
} else {
returnValue = -1;
}
} catch (Exception e) {
e.printStackTrace();
}
return returnValue;
}
public static String next(int qid, String value, Context context) {
// RESET UNWANTED ANSWERS
Survey.manageAnswers(qid, value, context);
String returnValue = "";
JSONArray positionArray = SaveSharedPreference.getUserResponsePosition(context);
if (null == positionArray || positionArray.length() > 8) {
positionArray = new JSONArray();
}
positionArray.put(qid);
SaveSharedPreference.setUserResponsePosition(context, positionArray.toString());
try {
JSONObject submitData = SaveSharedPreference.getUserResponse(context);
submitData.put("urn", SaveSharedPreference.getCurrentURN(context));
JSONArray dataArray = submitData.getJSONArray("data");
if (1 == qid) {
JSONObject question = dataArray.getJSONObject(0);
question.put("qid", qid);
question.put("type", "multiple_choice");
if (value.toLowerCase().equals("yes")) {
question.put("value", 1);
returnValue = "2";
} else if (value.toLowerCase().equals("no")) {
question.put("value", 2);
returnValue = "5";
}
dataArray.put(0, question);
question.put("textvalue", value);
} else if (2 == qid) {
JSONObject question = dataArray.getJSONObject(1);
question.put("qid", qid);
question.put("type", "image");
question.put("value", value);
returnValue = "3";
dataArray.put(1, question);
question.put("textvalue", value);
} else if (3 == qid) {
JSONObject question = dataArray.getJSONObject(2);
question.put("qid", qid);
question.put("type", "multiple_choice");
if (value.toLowerCase().equals("yes")) {
question.put("value", 3);
returnValue = "6";
} else if (value.toLowerCase().equals("no")) {
question.put("value", 4);
returnValue = "4";
}
dataArray.put(2, question);
question.put("textvalue", value);
}
.
.
.
.
.
.
.
} else if (10 == qid) {
JSONObject question = dataArray.getJSONObject(9);
question.put("qid", qid);
question.put("type", "multiple_choice");
if (value.toLowerCase().trim().equalsIgnoreCase("something")) {
question.put("value", 19);
} else if (value.toLowerCase().trim().equalsIgnoreCase("something")) {
question.put("value", 20);
} else if (value.toLowerCase().trim().equalsIgnoreCase("something")) {
question.put("value", 21);
} else if (value.toLowerCase().trim().equalsIgnoreCase("something")) {
question.put("value", 22);
} else if (value.toLowerCase().trim().equalsIgnoreCase("something")) {
question.put("value", 23);
}
returnValue = "";
dataArray.put(9, question);
question.put("textvalue", value);
}
submitData.put("data", dataArray);
SaveSharedPreference.setUserResponse(context, submitData.toString());
} catch (Exception e) {
e.printStackTrace();
}
return returnValue;
}
}
prev.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int prevQuestion = (Survey.prev(1, context));
String val=Survey.userValue(prevQuestion,context);
Log.d(TAG,"prevQusetionValue :" +val);
Log.d(TAG, "prevQuestion : " + String.valueOf(prevQuestion));
if (9 == prevQuestion) {
Intent intent = new Intent(SurveryQuestion1.this, SurveryQuestion9.class);
intent.putExtra("value",val);
startActivity(intent);
finish();
}
}
});
next.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int selectedId = radioGroup.getCheckedRadioButtonId();
if (-1 == selectedId) {
Toast.makeText(SurveryQuestion1.this, "Please answer to proceed", Toast.LENGTH_LONG).show();
} else {
radioButton = (RadioButton) findViewById(selectedId);
String answer = radioButton.getText().toString().toLowerCase().trim();
Log.d(TAG, "Answer : " + answer);
if ((null != answer) && (answer.length() > 0)) {
String nextQuestion = Survey.next(1, answer, context);
if (2 == Integer.valueOf(nextQuestion)) {
Intent intent = new Intent(SurveryQuestion1.this, SurveryQuestion2.class);
startActivity(intent);
finish();
} else if (5 == Integer.valueOf(nextQuestion)) {
Intent intent = new Intent(SurveryQuestion1.this, SurveryQuestion5.class);
startActivity(intent);
finish();
}
}
}
}
});
public static void setUserResponse(Context ctx, String userResponse) {
SharedPreferences.Editor editor = getSharedPreferences(ctx).edit();
editor.putString(PREF_USER_RESPONSE, userResponse);
editor.commit();
}
public static JSONObject getUserResponse(Context ctx) {
String response = getSharedPreferences(ctx).getString(PREF_USER_RESPONSE, "").toString();
JSONObject userResponse = null;
try {
if (null != response && response.length() > 0) {
userResponse = new JSONObject(response);
}
} catch (Exception e) {
e.printStackTrace();
userResponse = null;
}
return userResponse;
}
注意:1.使用Json对象。2.不使用Fragmentactivity
public class Survey {
private static JSONObject survey_response = new JSONObject();
private static String TAG = "HS_" + Survey.class.getSimpleName();
public static void init_response_object(Context context) {
try {
if ((null == SaveSharedPreference.getUserResponse(context)) || (SaveSharedPreference.getUserResponse(context).length() == 0)) {
JSONArray question_array = new JSONArray();
JSONObject question = new JSONObject();
question.put("qid", 1);
question.put("type", "multiple_choice");
question.put("value", "");
question.put("textvalue", "");
question_array.put(question);
question = new JSONObject();
question.put("qid", 2);
question.put("type", "image");
question.put("value", "");
question.put("textvalue", "");
question_array.put(question);
question = new JSONObject();
question.put("qid", 3);
question.put("type", "multiple_choice");
question.put("value", "");
question.put("textvalue", "");
question_array.put(question);
question = new JSONObject();
question.put("qid", 4);
question.put("type", "multiple_choice");
question.put("value", "");
question.put("textvalue", "");
question_array.put(question);
question = new JSONObject();
question.put("qid", 5);
question.put("type", "multiple_choice");
question.put("value", "");
question.put("textvalue", "");
question_array.put(question);
question = new JSONObject();
question.put("qid", 6);
question.put("type", "multiple_choice");
question.put("value", "");
question.put("textvalue", "");
question_array.put(question);
question = new JSONObject();
question.put("qid", 7);
question.put("type", "image");
question.put("value", "");
question.put("textvalue", "");
question_array.put(question);
question = new JSONObject();
question.put("qid", 8);
question.put("type", "text");
question.put("value", "");
question.put("textvalue", "");
question_array.put(question);
question = new JSONObject();
question.put("qid", 9);
question.put("type", "multiple_choice");
question.put("value", "");
question.put("textvalue", "");
question_array.put(question);
question = new JSONObject();
question.put("qid", 10);
question.put("type", "multiple_choice");
question.put("value", "");
question.put("textvalue", "");
question_array.put(question);
survey_response.put("urn", "nill");
survey_response.put("data", question_array);
SaveSharedPreference.setUserResponse(context, survey_response.toString());
Log.d(TAG + "_SR", survey_response.toString());
}
} catch (Exception e) {
e.printStackTrace();
}
}
public static void manageAnswers(int qid, String value, Context context) {
try {
JSONObject userResponse = SaveSharedPreference.getUserResponse(context);
JSONArray questions = userResponse.getJSONArray("data");
if (1 == qid) {
JSONObject question1 = questions.getJSONObject(0);
if (qid == question1.getInt("qid")) {
if (value.equalsIgnoreCase("no")) {
JSONObject question2 = questions.getJSONObject(1);
question2.put("value", "");
question2.put("textvalue", "");
questions.put(1, question2);
JSONObject question3 = questions.getJSONObject(2);
question3.put("value", "");
question3.put("textvalue", "");
questions.put(2, question3);
JSONObject question4 = questions.getJSONObject(3);
question4.put("value", "");
question4.put("textvalue", "");
questions.put(3, question4);
Log.d(TAG, "Q1 Ans is NO, hence resetting other questions - " + questions.toString());
userResponse.put("data", questions);
SaveSharedPreference.setUserResponse(context, userResponse.toString());
} else {
Log.d(TAG, "Ans : yes");
}
} else {
Log.d(TAG, "ERROR, MISMATCH IN qid / index");
}
} else if (3 == qid) {
JSONObject question3 = questions.getJSONObject(2);
if (qid == question3.getInt("qid")) {
if (value.equalsIgnoreCase("yes")) {
JSONObject question4 = questions.getJSONObject(3);
question4.put("value", "");
question4.put("textvalue", "");
questions.put(3, question4);
JSONObject question5 = questions.getJSONObject(4);
question5.put("value", "");
question5.put("textvalue", "");
questions.put(4, question5);
Log.d(TAG, "Q3 Ans is YES, hence resetting other questions - " + questions.toString());
userResponse.put("data", questions);
SaveSharedPreference.setUserResponse(context, userResponse.toString());
} else {
Log.d(TAG, "Ans : no");
}
} else {
Log.d(TAG, "ERROR, MISMATCH IN qid / index");
}
} else if (6 == qid) {
JSONObject question6 = questions.getJSONObject(5);
if (qid == question6.getInt("qid")) {
if (value.equalsIgnoreCase("no")) {
JSONObject question7 = questions.getJSONObject(6);
question7.put("value", "");
question7.put("textvalue", "");
questions.put(6, question7);
Log.d(TAG, "Q6 Ans is NO, hence resetting other questions - " + questions.toString());
userResponse.put("data", questions);
SaveSharedPreference.setUserResponse(context, userResponse.toString());
} else {
Log.d(TAG, "Ans : yes");
}
} else {
Log.d(TAG, "ERROR, MISMATCH IN qid / index");
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
//using this as uservalue to set the radiobutton
public static String userValue(int prevQuestion,Context context) {
String textValue = null;
try {
JSONObject userVal = SaveSharedPreference.getUserResponse(context);
Log.d(TAG, "userVal:" + userVal.toString());
JSONArray userTextVal = userVal.getJSONArray("data");
Log.d(TAG, "userTextValue" + userTextVal.toString());
for (int i = 0; i < userTextVal.length(); i++) {
JSONObject us = userTextVal.getJSONObject(i);
int quet = us.getInt("qid");
if (quet == prevQuestion) {
Log.d(TAG, "qId :" + quet);
Log.d(TAG, "textvalue :" + us.getString("textvalue"));
textValue = us.getString("textvalue");
}
}
} catch (Exception e) {
e.printStackTrace();
}
return textValue;
}
public static int prev(int qid, Context context) {
int returnValue = -1;
int count;
try {
JSONArray userPos = SaveSharedPreference.getUserResponsePosition(context);
/*ArrayList<String> pos = new ArrayList<>();
for (int i = 0; i < userPos.length(); i++) {
pos.add(userPos.getString(i).trim());
}*/
// count = pos.size();
count = userPos.length();
Log.d(TAG, "userPos : " + userPos.toString());
Log.d(TAG, "count : " + count);
if (count > 0) {
// returnValue = Integer.parseInt((pos.get(count - 1)));
returnValue = (int) userPos.get(count - 1);
Log.d(TAG, "position : " + returnValue);
//resetting the position
userPos.remove(count - 1);
SaveSharedPreference.setUserResponsePosition(context, userPos.toString());
} else {
returnValue = -1;
}
} catch (Exception e) {
e.printStackTrace();
}
return returnValue;
}
public static String next(int qid, String value, Context context) {
// RESET UNWANTED ANSWERS
Survey.manageAnswers(qid, value, context);
String returnValue = "";
JSONArray positionArray = SaveSharedPreference.getUserResponsePosition(context);
if (null == positionArray || positionArray.length() > 8) {
positionArray = new JSONArray();
}
positionArray.put(qid);
SaveSharedPreference.setUserResponsePosition(context, positionArray.toString());
try {
JSONObject submitData = SaveSharedPreference.getUserResponse(context);
submitData.put("urn", SaveSharedPreference.getCurrentURN(context));
JSONArray dataArray = submitData.getJSONArray("data");
if (1 == qid) {
JSONObject question = dataArray.getJSONObject(0);
question.put("qid", qid);
question.put("type", "multiple_choice");
if (value.toLowerCase().equals("yes")) {
question.put("value", 1);
returnValue = "2";
} else if (value.toLowerCase().equals("no")) {
question.put("value", 2);
returnValue = "5";
}
dataArray.put(0, question);
question.put("textvalue", value);
} else if (2 == qid) {
JSONObject question = dataArray.getJSONObject(1);
question.put("qid", qid);
question.put("type", "image");
question.put("value", value);
returnValue = "3";
dataArray.put(1, question);
question.put("textvalue", value);
} else if (3 == qid) {
JSONObject question = dataArray.getJSONObject(2);
question.put("qid", qid);
question.put("type", "multiple_choice");
if (value.toLowerCase().equals("yes")) {
question.put("value", 3);
returnValue = "6";
} else if (value.toLowerCase().equals("no")) {
question.put("value", 4);
returnValue = "4";
}
dataArray.put(2, question);
question.put("textvalue", value);
}
.
.
.
.
.
.
.
} else if (10 == qid) {
JSONObject question = dataArray.getJSONObject(9);
question.put("qid", qid);
question.put("type", "multiple_choice");
if (value.toLowerCase().trim().equalsIgnoreCase("something")) {
question.put("value", 19);
} else if (value.toLowerCase().trim().equalsIgnoreCase("something")) {
question.put("value", 20);
} else if (value.toLowerCase().trim().equalsIgnoreCase("something")) {
question.put("value", 21);
} else if (value.toLowerCase().trim().equalsIgnoreCase("something")) {
question.put("value", 22);
} else if (value.toLowerCase().trim().equalsIgnoreCase("something")) {
question.put("value", 23);
}
returnValue = "";
dataArray.put(9, question);
question.put("textvalue", value);
}
submitData.put("data", dataArray);
SaveSharedPreference.setUserResponse(context, submitData.toString());
} catch (Exception e) {
e.printStackTrace();
}
return returnValue;
}
}
prev.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int prevQuestion = (Survey.prev(1, context));
String val=Survey.userValue(prevQuestion,context);
Log.d(TAG,"prevQusetionValue :" +val);
Log.d(TAG, "prevQuestion : " + String.valueOf(prevQuestion));
if (9 == prevQuestion) {
Intent intent = new Intent(SurveryQuestion1.this, SurveryQuestion9.class);
intent.putExtra("value",val);
startActivity(intent);
finish();
}
}
});
next.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int selectedId = radioGroup.getCheckedRadioButtonId();
if (-1 == selectedId) {
Toast.makeText(SurveryQuestion1.this, "Please answer to proceed", Toast.LENGTH_LONG).show();
} else {
radioButton = (RadioButton) findViewById(selectedId);
String answer = radioButton.getText().toString().toLowerCase().trim();
Log.d(TAG, "Answer : " + answer);
if ((null != answer) && (answer.length() > 0)) {
String nextQuestion = Survey.next(1, answer, context);
if (2 == Integer.valueOf(nextQuestion)) {
Intent intent = new Intent(SurveryQuestion1.this, SurveryQuestion2.class);
startActivity(intent);
finish();
} else if (5 == Integer.valueOf(nextQuestion)) {
Intent intent = new Intent(SurveryQuestion1.this, SurveryQuestion5.class);
startActivity(intent);
finish();
}
}
}
}
});
在单击事件之前,我尝试在新活动的onCreate()中使用此方法设置radiobutton的值。给我一个错误:-radioButton1.getText()的Null指针执行选项
public class Survey {
private static JSONObject survey_response = new JSONObject();
private static String TAG = "HS_" + Survey.class.getSimpleName();
public static void init_response_object(Context context) {
try {
if ((null == SaveSharedPreference.getUserResponse(context)) || (SaveSharedPreference.getUserResponse(context).length() == 0)) {
JSONArray question_array = new JSONArray();
JSONObject question = new JSONObject();
question.put("qid", 1);
question.put("type", "multiple_choice");
question.put("value", "");
question.put("textvalue", "");
question_array.put(question);
question = new JSONObject();
question.put("qid", 2);
question.put("type", "image");
question.put("value", "");
question.put("textvalue", "");
question_array.put(question);
question = new JSONObject();
question.put("qid", 3);
question.put("type", "multiple_choice");
question.put("value", "");
question.put("textvalue", "");
question_array.put(question);
question = new JSONObject();
question.put("qid", 4);
question.put("type", "multiple_choice");
question.put("value", "");
question.put("textvalue", "");
question_array.put(question);
question = new JSONObject();
question.put("qid", 5);
question.put("type", "multiple_choice");
question.put("value", "");
question.put("textvalue", "");
question_array.put(question);
question = new JSONObject();
question.put("qid", 6);
question.put("type", "multiple_choice");
question.put("value", "");
question.put("textvalue", "");
question_array.put(question);
question = new JSONObject();
question.put("qid", 7);
question.put("type", "image");
question.put("value", "");
question.put("textvalue", "");
question_array.put(question);
question = new JSONObject();
question.put("qid", 8);
question.put("type", "text");
question.put("value", "");
question.put("textvalue", "");
question_array.put(question);
question = new JSONObject();
question.put("qid", 9);
question.put("type", "multiple_choice");
question.put("value", "");
question.put("textvalue", "");
question_array.put(question);
question = new JSONObject();
question.put("qid", 10);
question.put("type", "multiple_choice");
question.put("value", "");
question.put("textvalue", "");
question_array.put(question);
survey_response.put("urn", "nill");
survey_response.put("data", question_array);
SaveSharedPreference.setUserResponse(context, survey_response.toString());
Log.d(TAG + "_SR", survey_response.toString());
}
} catch (Exception e) {
e.printStackTrace();
}
}
public static void manageAnswers(int qid, String value, Context context) {
try {
JSONObject userResponse = SaveSharedPreference.getUserResponse(context);
JSONArray questions = userResponse.getJSONArray("data");
if (1 == qid) {
JSONObject question1 = questions.getJSONObject(0);
if (qid == question1.getInt("qid")) {
if (value.equalsIgnoreCase("no")) {
JSONObject question2 = questions.getJSONObject(1);
question2.put("value", "");
question2.put("textvalue", "");
questions.put(1, question2);
JSONObject question3 = questions.getJSONObject(2);
question3.put("value", "");
question3.put("textvalue", "");
questions.put(2, question3);
JSONObject question4 = questions.getJSONObject(3);
question4.put("value", "");
question4.put("textvalue", "");
questions.put(3, question4);
Log.d(TAG, "Q1 Ans is NO, hence resetting other questions - " + questions.toString());
userResponse.put("data", questions);
SaveSharedPreference.setUserResponse(context, userResponse.toString());
} else {
Log.d(TAG, "Ans : yes");
}
} else {
Log.d(TAG, "ERROR, MISMATCH IN qid / index");
}
} else if (3 == qid) {
JSONObject question3 = questions.getJSONObject(2);
if (qid == question3.getInt("qid")) {
if (value.equalsIgnoreCase("yes")) {
JSONObject question4 = questions.getJSONObject(3);
question4.put("value", "");
question4.put("textvalue", "");
questions.put(3, question4);
JSONObject question5 = questions.getJSONObject(4);
question5.put("value", "");
question5.put("textvalue", "");
questions.put(4, question5);
Log.d(TAG, "Q3 Ans is YES, hence resetting other questions - " + questions.toString());
userResponse.put("data", questions);
SaveSharedPreference.setUserResponse(context, userResponse.toString());
} else {
Log.d(TAG, "Ans : no");
}
} else {
Log.d(TAG, "ERROR, MISMATCH IN qid / index");
}
} else if (6 == qid) {
JSONObject question6 = questions.getJSONObject(5);
if (qid == question6.getInt("qid")) {
if (value.equalsIgnoreCase("no")) {
JSONObject question7 = questions.getJSONObject(6);
question7.put("value", "");
question7.put("textvalue", "");
questions.put(6, question7);
Log.d(TAG, "Q6 Ans is NO, hence resetting other questions - " + questions.toString());
userResponse.put("data", questions);
SaveSharedPreference.setUserResponse(context, userResponse.toString());
} else {
Log.d(TAG, "Ans : yes");
}
} else {
Log.d(TAG, "ERROR, MISMATCH IN qid / index");
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
//using this as uservalue to set the radiobutton
public static String userValue(int prevQuestion,Context context) {
String textValue = null;
try {
JSONObject userVal = SaveSharedPreference.getUserResponse(context);
Log.d(TAG, "userVal:" + userVal.toString());
JSONArray userTextVal = userVal.getJSONArray("data");
Log.d(TAG, "userTextValue" + userTextVal.toString());
for (int i = 0; i < userTextVal.length(); i++) {
JSONObject us = userTextVal.getJSONObject(i);
int quet = us.getInt("qid");
if (quet == prevQuestion) {
Log.d(TAG, "qId :" + quet);
Log.d(TAG, "textvalue :" + us.getString("textvalue"));
textValue = us.getString("textvalue");
}
}
} catch (Exception e) {
e.printStackTrace();
}
return textValue;
}
public static int prev(int qid, Context context) {
int returnValue = -1;
int count;
try {
JSONArray userPos = SaveSharedPreference.getUserResponsePosition(context);
/*ArrayList<String> pos = new ArrayList<>();
for (int i = 0; i < userPos.length(); i++) {
pos.add(userPos.getString(i).trim());
}*/
// count = pos.size();
count = userPos.length();
Log.d(TAG, "userPos : " + userPos.toString());
Log.d(TAG, "count : " + count);
if (count > 0) {
// returnValue = Integer.parseInt((pos.get(count - 1)));
returnValue = (int) userPos.get(count - 1);
Log.d(TAG, "position : " + returnValue);
//resetting the position
userPos.remove(count - 1);
SaveSharedPreference.setUserResponsePosition(context, userPos.toString());
} else {
returnValue = -1;
}
} catch (Exception e) {
e.printStackTrace();
}
return returnValue;
}
public static String next(int qid, String value, Context context) {
// RESET UNWANTED ANSWERS
Survey.manageAnswers(qid, value, context);
String returnValue = "";
JSONArray positionArray = SaveSharedPreference.getUserResponsePosition(context);
if (null == positionArray || positionArray.length() > 8) {
positionArray = new JSONArray();
}
positionArray.put(qid);
SaveSharedPreference.setUserResponsePosition(context, positionArray.toString());
try {
JSONObject submitData = SaveSharedPreference.getUserResponse(context);
submitData.put("urn", SaveSharedPreference.getCurrentURN(context));
JSONArray dataArray = submitData.getJSONArray("data");
if (1 == qid) {
JSONObject question = dataArray.getJSONObject(0);
question.put("qid", qid);
question.put("type", "multiple_choice");
if (value.toLowerCase().equals("yes")) {
question.put("value", 1);
returnValue = "2";
} else if (value.toLowerCase().equals("no")) {
question.put("value", 2);
returnValue = "5";
}
dataArray.put(0, question);
question.put("textvalue", value);
} else if (2 == qid) {
JSONObject question = dataArray.getJSONObject(1);
question.put("qid", qid);
question.put("type", "image");
question.put("value", value);
returnValue = "3";
dataArray.put(1, question);
question.put("textvalue", value);
} else if (3 == qid) {
JSONObject question = dataArray.getJSONObject(2);
question.put("qid", qid);
question.put("type", "multiple_choice");
if (value.toLowerCase().equals("yes")) {
question.put("value", 3);
returnValue = "6";
} else if (value.toLowerCase().equals("no")) {
question.put("value", 4);
returnValue = "4";
}
dataArray.put(2, question);
question.put("textvalue", value);
}
.
.
.
.
.
.
.
} else if (10 == qid) {
JSONObject question = dataArray.getJSONObject(9);
question.put("qid", qid);
question.put("type", "multiple_choice");
if (value.toLowerCase().trim().equalsIgnoreCase("something")) {
question.put("value", 19);
} else if (value.toLowerCase().trim().equalsIgnoreCase("something")) {
question.put("value", 20);
} else if (value.toLowerCase().trim().equalsIgnoreCase("something")) {
question.put("value", 21);
} else if (value.toLowerCase().trim().equalsIgnoreCase("something")) {
question.put("value", 22);
} else if (value.toLowerCase().trim().equalsIgnoreCase("something")) {
question.put("value", 23);
}
returnValue = "";
dataArray.put(9, question);
question.put("textvalue", value);
}
submitData.put("data", dataArray);
SaveSharedPreference.setUserResponse(context, submitData.toString());
} catch (Exception e) {
e.printStackTrace();
}
return returnValue;
}
}
prev.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int prevQuestion = (Survey.prev(1, context));
String val=Survey.userValue(prevQuestion,context);
Log.d(TAG,"prevQusetionValue :" +val);
Log.d(TAG, "prevQuestion : " + String.valueOf(prevQuestion));
if (9 == prevQuestion) {
Intent intent = new Intent(SurveryQuestion1.this, SurveryQuestion9.class);
intent.putExtra("value",val);
startActivity(intent);
finish();
}
}
});
next.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int selectedId = radioGroup.getCheckedRadioButtonId();
if (-1 == selectedId) {
Toast.makeText(SurveryQuestion1.this, "Please answer to proceed", Toast.LENGTH_LONG).show();
} else {
radioButton = (RadioButton) findViewById(selectedId);
String answer = radioButton.getText().toString().toLowerCase().trim();
Log.d(TAG, "Answer : " + answer);
if ((null != answer) && (answer.length() > 0)) {
String nextQuestion = Survey.next(1, answer, context);
if (2 == Integer.valueOf(nextQuestion)) {
Intent intent = new Intent(SurveryQuestion1.this, SurveryQuestion2.class);
startActivity(intent);
finish();
} else if (5 == Integer.valueOf(nextQuestion)) {
Intent intent = new Intent(SurveryQuestion1.this, SurveryQuestion5.class);
startActivity(intent);
finish();
}
}
}
}
});
调查问题1.java
public class Survey {
private static JSONObject survey_response = new JSONObject();
private static String TAG = "HS_" + Survey.class.getSimpleName();
public static void init_response_object(Context context) {
try {
if ((null == SaveSharedPreference.getUserResponse(context)) || (SaveSharedPreference.getUserResponse(context).length() == 0)) {
JSONArray question_array = new JSONArray();
JSONObject question = new JSONObject();
question.put("qid", 1);
question.put("type", "multiple_choice");
question.put("value", "");
question.put("textvalue", "");
question_array.put(question);
question = new JSONObject();
question.put("qid", 2);
question.put("type", "image");
question.put("value", "");
question.put("textvalue", "");
question_array.put(question);
question = new JSONObject();
question.put("qid", 3);
question.put("type", "multiple_choice");
question.put("value", "");
question.put("textvalue", "");
question_array.put(question);
question = new JSONObject();
question.put("qid", 4);
question.put("type", "multiple_choice");
question.put("value", "");
question.put("textvalue", "");
question_array.put(question);
question = new JSONObject();
question.put("qid", 5);
question.put("type", "multiple_choice");
question.put("value", "");
question.put("textvalue", "");
question_array.put(question);
question = new JSONObject();
question.put("qid", 6);
question.put("type", "multiple_choice");
question.put("value", "");
question.put("textvalue", "");
question_array.put(question);
question = new JSONObject();
question.put("qid", 7);
question.put("type", "image");
question.put("value", "");
question.put("textvalue", "");
question_array.put(question);
question = new JSONObject();
question.put("qid", 8);
question.put("type", "text");
question.put("value", "");
question.put("textvalue", "");
question_array.put(question);
question = new JSONObject();
question.put("qid", 9);
question.put("type", "multiple_choice");
question.put("value", "");
question.put("textvalue", "");
question_array.put(question);
question = new JSONObject();
question.put("qid", 10);
question.put("type", "multiple_choice");
question.put("value", "");
question.put("textvalue", "");
question_array.put(question);
survey_response.put("urn", "nill");
survey_response.put("data", question_array);
SaveSharedPreference.setUserResponse(context, survey_response.toString());
Log.d(TAG + "_SR", survey_response.toString());
}
} catch (Exception e) {
e.printStackTrace();
}
}
public static void manageAnswers(int qid, String value, Context context) {
try {
JSONObject userResponse = SaveSharedPreference.getUserResponse(context);
JSONArray questions = userResponse.getJSONArray("data");
if (1 == qid) {
JSONObject question1 = questions.getJSONObject(0);
if (qid == question1.getInt("qid")) {
if (value.equalsIgnoreCase("no")) {
JSONObject question2 = questions.getJSONObject(1);
question2.put("value", "");
question2.put("textvalue", "");
questions.put(1, question2);
JSONObject question3 = questions.getJSONObject(2);
question3.put("value", "");
question3.put("textvalue", "");
questions.put(2, question3);
JSONObject question4 = questions.getJSONObject(3);
question4.put("value", "");
question4.put("textvalue", "");
questions.put(3, question4);
Log.d(TAG, "Q1 Ans is NO, hence resetting other questions - " + questions.toString());
userResponse.put("data", questions);
SaveSharedPreference.setUserResponse(context, userResponse.toString());
} else {
Log.d(TAG, "Ans : yes");
}
} else {
Log.d(TAG, "ERROR, MISMATCH IN qid / index");
}
} else if (3 == qid) {
JSONObject question3 = questions.getJSONObject(2);
if (qid == question3.getInt("qid")) {
if (value.equalsIgnoreCase("yes")) {
JSONObject question4 = questions.getJSONObject(3);
question4.put("value", "");
question4.put("textvalue", "");
questions.put(3, question4);
JSONObject question5 = questions.getJSONObject(4);
question5.put("value", "");
question5.put("textvalue", "");
questions.put(4, question5);
Log.d(TAG, "Q3 Ans is YES, hence resetting other questions - " + questions.toString());
userResponse.put("data", questions);
SaveSharedPreference.setUserResponse(context, userResponse.toString());
} else {
Log.d(TAG, "Ans : no");
}
} else {
Log.d(TAG, "ERROR, MISMATCH IN qid / index");
}
} else if (6 == qid) {
JSONObject question6 = questions.getJSONObject(5);
if (qid == question6.getInt("qid")) {
if (value.equalsIgnoreCase("no")) {
JSONObject question7 = questions.getJSONObject(6);
question7.put("value", "");
question7.put("textvalue", "");
questions.put(6, question7);
Log.d(TAG, "Q6 Ans is NO, hence resetting other questions - " + questions.toString());
userResponse.put("data", questions);
SaveSharedPreference.setUserResponse(context, userResponse.toString());
} else {
Log.d(TAG, "Ans : yes");
}
} else {
Log.d(TAG, "ERROR, MISMATCH IN qid / index");
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
//using this as uservalue to set the radiobutton
public static String userValue(int prevQuestion,Context context) {
String textValue = null;
try {
JSONObject userVal = SaveSharedPreference.getUserResponse(context);
Log.d(TAG, "userVal:" + userVal.toString());
JSONArray userTextVal = userVal.getJSONArray("data");
Log.d(TAG, "userTextValue" + userTextVal.toString());
for (int i = 0; i < userTextVal.length(); i++) {
JSONObject us = userTextVal.getJSONObject(i);
int quet = us.getInt("qid");
if (quet == prevQuestion) {
Log.d(TAG, "qId :" + quet);
Log.d(TAG, "textvalue :" + us.getString("textvalue"));
textValue = us.getString("textvalue");
}
}
} catch (Exception e) {
e.printStackTrace();
}
return textValue;
}
public static int prev(int qid, Context context) {
int returnValue = -1;
int count;
try {
JSONArray userPos = SaveSharedPreference.getUserResponsePosition(context);
/*ArrayList<String> pos = new ArrayList<>();
for (int i = 0; i < userPos.length(); i++) {
pos.add(userPos.getString(i).trim());
}*/
// count = pos.size();
count = userPos.length();
Log.d(TAG, "userPos : " + userPos.toString());
Log.d(TAG, "count : " + count);
if (count > 0) {
// returnValue = Integer.parseInt((pos.get(count - 1)));
returnValue = (int) userPos.get(count - 1);
Log.d(TAG, "position : " + returnValue);
//resetting the position
userPos.remove(count - 1);
SaveSharedPreference.setUserResponsePosition(context, userPos.toString());
} else {
returnValue = -1;
}
} catch (Exception e) {
e.printStackTrace();
}
return returnValue;
}
public static String next(int qid, String value, Context context) {
// RESET UNWANTED ANSWERS
Survey.manageAnswers(qid, value, context);
String returnValue = "";
JSONArray positionArray = SaveSharedPreference.getUserResponsePosition(context);
if (null == positionArray || positionArray.length() > 8) {
positionArray = new JSONArray();
}
positionArray.put(qid);
SaveSharedPreference.setUserResponsePosition(context, positionArray.toString());
try {
JSONObject submitData = SaveSharedPreference.getUserResponse(context);
submitData.put("urn", SaveSharedPreference.getCurrentURN(context));
JSONArray dataArray = submitData.getJSONArray("data");
if (1 == qid) {
JSONObject question = dataArray.getJSONObject(0);
question.put("qid", qid);
question.put("type", "multiple_choice");
if (value.toLowerCase().equals("yes")) {
question.put("value", 1);
returnValue = "2";
} else if (value.toLowerCase().equals("no")) {
question.put("value", 2);
returnValue = "5";
}
dataArray.put(0, question);
question.put("textvalue", value);
} else if (2 == qid) {
JSONObject question = dataArray.getJSONObject(1);
question.put("qid", qid);
question.put("type", "image");
question.put("value", value);
returnValue = "3";
dataArray.put(1, question);
question.put("textvalue", value);
} else if (3 == qid) {
JSONObject question = dataArray.getJSONObject(2);
question.put("qid", qid);
question.put("type", "multiple_choice");
if (value.toLowerCase().equals("yes")) {
question.put("value", 3);
returnValue = "6";
} else if (value.toLowerCase().equals("no")) {
question.put("value", 4);
returnValue = "4";
}
dataArray.put(2, question);
question.put("textvalue", value);
}
.
.
.
.
.
.
.
} else if (10 == qid) {
JSONObject question = dataArray.getJSONObject(9);
question.put("qid", qid);
question.put("type", "multiple_choice");
if (value.toLowerCase().trim().equalsIgnoreCase("something")) {
question.put("value", 19);
} else if (value.toLowerCase().trim().equalsIgnoreCase("something")) {
question.put("value", 20);
} else if (value.toLowerCase().trim().equalsIgnoreCase("something")) {
question.put("value", 21);
} else if (value.toLowerCase().trim().equalsIgnoreCase("something")) {
question.put("value", 22);
} else if (value.toLowerCase().trim().equalsIgnoreCase("something")) {
question.put("value", 23);
}
returnValue = "";
dataArray.put(9, question);
question.put("textvalue", value);
}
submitData.put("data", dataArray);
SaveSharedPreference.setUserResponse(context, submitData.toString());
} catch (Exception e) {
e.printStackTrace();
}
return returnValue;
}
}
prev.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int prevQuestion = (Survey.prev(1, context));
String val=Survey.userValue(prevQuestion,context);
Log.d(TAG,"prevQusetionValue :" +val);
Log.d(TAG, "prevQuestion : " + String.valueOf(prevQuestion));
if (9 == prevQuestion) {
Intent intent = new Intent(SurveryQuestion1.this, SurveryQuestion9.class);
intent.putExtra("value",val);
startActivity(intent);
finish();
}
}
});
next.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int selectedId = radioGroup.getCheckedRadioButtonId();
if (-1 == selectedId) {
Toast.makeText(SurveryQuestion1.this, "Please answer to proceed", Toast.LENGTH_LONG).show();
} else {
radioButton = (RadioButton) findViewById(selectedId);
String answer = radioButton.getText().toString().toLowerCase().trim();
Log.d(TAG, "Answer : " + answer);
if ((null != answer) && (answer.length() > 0)) {
String nextQuestion = Survey.next(1, answer, context);
if (2 == Integer.valueOf(nextQuestion)) {
Intent intent = new Intent(SurveryQuestion1.this, SurveryQuestion2.class);
startActivity(intent);
finish();
} else if (5 == Integer.valueOf(nextQuestion)) {
Intent intent = new Intent(SurveryQuestion1.this, SurveryQuestion5.class);
startActivity(intent);
finish();
}
}
}
}
});
radioButton1 = (RadioButton) findViewById(R.id.rb_yes);
String check= (String) radioButton1.getText().toString();//Null Pointer Exception
Log.d(TAG,"check"+check);*/
radioButton2 = (RadioButton) findViewById(R.id.rb_no);
if (check.equalsIgnoreCase(prevValue)) {
radioButton1.setChecked(true);
}
else {
radioButton2.setChecked(true);
}
prev.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(SurveryQuestion9.this, SurveryMgmt.class);
startActivity(intent);
finish();
}
});
next.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// CREATE A DUMMY JSON
Survey.init_response_object(context);
// INIT USER POSITION
SaveSharedPreference.setUserResponsePosition(context, new JSONArray().toString());
int selectedId = radioGroup.getCheckedRadioButtonId();
if (-1 == selectedId) {
Toast.makeText(SurveryQuestion9.this, "Please answer to proceed", Toast.LENGTH_LONG).show();
} else {
radioButton = (RadioButton) findViewById(selectedId);
String answer = radioButton.getText().toString().toLowerCase().trim();
String nextQuestion = Survey.next(9, answer, context);
if (1 == Integer.valueOf(nextQuestion)) {
Intent intent = new Intent(SurveryQuestion9.this, SurveryQuestion1.class);
startActivity(intent);
finish();
} else if (10 == Integer.valueOf(nextQuestion)) {
Intent intent = new Intent(SurveryQuestion9.this, SurveryQuestion10.class);
startActivity(intent);
finish();
}
}
}
});
创建单个活动并为每个问题添加视图。有一个全局计数器和next()和previous()方法。加载第一个问题的计数器==0的视图,并将响应保存在模型中。按下下一步按钮时,调用next()并递增计数器,添加带有下一个问题的视图。若转到上一步,则从模型中获取保存的数据,并用该值更新单选按钮。 这将使您的代码易于管理,并且可以在以后进行扩展,而无需任何额外的工作
public class Survey {
private static JSONObject survey_response = new JSONObject();
private static String TAG = "HS_" + Survey.class.getSimpleName();
public static void init_response_object(Context context) {
try {
if ((null == SaveSharedPreference.getUserResponse(context)) || (SaveSharedPreference.getUserResponse(context).length() == 0)) {
JSONArray question_array = new JSONArray();
JSONObject question = new JSONObject();
question.put("qid", 1);
question.put("type", "multiple_choice");
question.put("value", "");
question.put("textvalue", "");
question_array.put(question);
question = new JSONObject();
question.put("qid", 2);
question.put("type", "image");
question.put("value", "");
question.put("textvalue", "");
question_array.put(question);
question = new JSONObject();
question.put("qid", 3);
question.put("type", "multiple_choice");
question.put("value", "");
question.put("textvalue", "");
question_array.put(question);
question = new JSONObject();
question.put("qid", 4);
question.put("type", "multiple_choice");
question.put("value", "");
question.put("textvalue", "");
question_array.put(question);
question = new JSONObject();
question.put("qid", 5);
question.put("type", "multiple_choice");
question.put("value", "");
question.put("textvalue", "");
question_array.put(question);
question = new JSONObject();
question.put("qid", 6);
question.put("type", "multiple_choice");
question.put("value", "");
question.put("textvalue", "");
question_array.put(question);
question = new JSONObject();
question.put("qid", 7);
question.put("type", "image");
question.put("value", "");
question.put("textvalue", "");
question_array.put(question);
question = new JSONObject();
question.put("qid", 8);
question.put("type", "text");
question.put("value", "");
question.put("textvalue", "");
question_array.put(question);
question = new JSONObject();
question.put("qid", 9);
question.put("type", "multiple_choice");
question.put("value", "");
question.put("textvalue", "");
question_array.put(question);
question = new JSONObject();
question.put("qid", 10);
question.put("type", "multiple_choice");
question.put("value", "");
question.put("textvalue", "");
question_array.put(question);
survey_response.put("urn", "nill");
survey_response.put("data", question_array);
SaveSharedPreference.setUserResponse(context, survey_response.toString());
Log.d(TAG + "_SR", survey_response.toString());
}
} catch (Exception e) {
e.printStackTrace();
}
}
public static void manageAnswers(int qid, String value, Context context) {
try {
JSONObject userResponse = SaveSharedPreference.getUserResponse(context);
JSONArray questions = userResponse.getJSONArray("data");
if (1 == qid) {
JSONObject question1 = questions.getJSONObject(0);
if (qid == question1.getInt("qid")) {
if (value.equalsIgnoreCase("no")) {
JSONObject question2 = questions.getJSONObject(1);
question2.put("value", "");
question2.put("textvalue", "");
questions.put(1, question2);
JSONObject question3 = questions.getJSONObject(2);
question3.put("value", "");
question3.put("textvalue", "");
questions.put(2, question3);
JSONObject question4 = questions.getJSONObject(3);
question4.put("value", "");
question4.put("textvalue", "");
questions.put(3, question4);
Log.d(TAG, "Q1 Ans is NO, hence resetting other questions - " + questions.toString());
userResponse.put("data", questions);
SaveSharedPreference.setUserResponse(context, userResponse.toString());
} else {
Log.d(TAG, "Ans : yes");
}
} else {
Log.d(TAG, "ERROR, MISMATCH IN qid / index");
}
} else if (3 == qid) {
JSONObject question3 = questions.getJSONObject(2);
if (qid == question3.getInt("qid")) {
if (value.equalsIgnoreCase("yes")) {
JSONObject question4 = questions.getJSONObject(3);
question4.put("value", "");
question4.put("textvalue", "");
questions.put(3, question4);
JSONObject question5 = questions.getJSONObject(4);
question5.put("value", "");
question5.put("textvalue", "");
questions.put(4, question5);
Log.d(TAG, "Q3 Ans is YES, hence resetting other questions - " + questions.toString());
userResponse.put("data", questions);
SaveSharedPreference.setUserResponse(context, userResponse.toString());
} else {
Log.d(TAG, "Ans : no");
}
} else {
Log.d(TAG, "ERROR, MISMATCH IN qid / index");
}
} else if (6 == qid) {
JSONObject question6 = questions.getJSONObject(5);
if (qid == question6.getInt("qid")) {
if (value.equalsIgnoreCase("no")) {
JSONObject question7 = questions.getJSONObject(6);
question7.put("value", "");
question7.put("textvalue", "");
questions.put(6, question7);
Log.d(TAG, "Q6 Ans is NO, hence resetting other questions - " + questions.toString());
userResponse.put("data", questions);
SaveSharedPreference.setUserResponse(context, userResponse.toString());
} else {
Log.d(TAG, "Ans : yes");
}
} else {
Log.d(TAG, "ERROR, MISMATCH IN qid / index");
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
//using this as uservalue to set the radiobutton
public static String userValue(int prevQuestion,Context context) {
String textValue = null;
try {
JSONObject userVal = SaveSharedPreference.getUserResponse(context);
Log.d(TAG, "userVal:" + userVal.toString());
JSONArray userTextVal = userVal.getJSONArray("data");
Log.d(TAG, "userTextValue" + userTextVal.toString());
for (int i = 0; i < userTextVal.length(); i++) {
JSONObject us = userTextVal.getJSONObject(i);
int quet = us.getInt("qid");
if (quet == prevQuestion) {
Log.d(TAG, "qId :" + quet);
Log.d(TAG, "textvalue :" + us.getString("textvalue"));
textValue = us.getString("textvalue");
}
}
} catch (Exception e) {
e.printStackTrace();
}
return textValue;
}
public static int prev(int qid, Context context) {
int returnValue = -1;
int count;
try {
JSONArray userPos = SaveSharedPreference.getUserResponsePosition(context);
/*ArrayList<String> pos = new ArrayList<>();
for (int i = 0; i < userPos.length(); i++) {
pos.add(userPos.getString(i).trim());
}*/
// count = pos.size();
count = userPos.length();
Log.d(TAG, "userPos : " + userPos.toString());
Log.d(TAG, "count : " + count);
if (count > 0) {
// returnValue = Integer.parseInt((pos.get(count - 1)));
returnValue = (int) userPos.get(count - 1);
Log.d(TAG, "position : " + returnValue);
//resetting the position
userPos.remove(count - 1);
SaveSharedPreference.setUserResponsePosition(context, userPos.toString());
} else {
returnValue = -1;
}
} catch (Exception e) {
e.printStackTrace();
}
return returnValue;
}
public static String next(int qid, String value, Context context) {
// RESET UNWANTED ANSWERS
Survey.manageAnswers(qid, value, context);
String returnValue = "";
JSONArray positionArray = SaveSharedPreference.getUserResponsePosition(context);
if (null == positionArray || positionArray.length() > 8) {
positionArray = new JSONArray();
}
positionArray.put(qid);
SaveSharedPreference.setUserResponsePosition(context, positionArray.toString());
try {
JSONObject submitData = SaveSharedPreference.getUserResponse(context);
submitData.put("urn", SaveSharedPreference.getCurrentURN(context));
JSONArray dataArray = submitData.getJSONArray("data");
if (1 == qid) {
JSONObject question = dataArray.getJSONObject(0);
question.put("qid", qid);
question.put("type", "multiple_choice");
if (value.toLowerCase().equals("yes")) {
question.put("value", 1);
returnValue = "2";
} else if (value.toLowerCase().equals("no")) {
question.put("value", 2);
returnValue = "5";
}
dataArray.put(0, question);
question.put("textvalue", value);
} else if (2 == qid) {
JSONObject question = dataArray.getJSONObject(1);
question.put("qid", qid);
question.put("type", "image");
question.put("value", value);
returnValue = "3";
dataArray.put(1, question);
question.put("textvalue", value);
} else if (3 == qid) {
JSONObject question = dataArray.getJSONObject(2);
question.put("qid", qid);
question.put("type", "multiple_choice");
if (value.toLowerCase().equals("yes")) {
question.put("value", 3);
returnValue = "6";
} else if (value.toLowerCase().equals("no")) {
question.put("value", 4);
returnValue = "4";
}
dataArray.put(2, question);
question.put("textvalue", value);
}
.
.
.
.
.
.
.
} else if (10 == qid) {
JSONObject question = dataArray.getJSONObject(9);
question.put("qid", qid);
question.put("type", "multiple_choice");
if (value.toLowerCase().trim().equalsIgnoreCase("something")) {
question.put("value", 19);
} else if (value.toLowerCase().trim().equalsIgnoreCase("something")) {
question.put("value", 20);
} else if (value.toLowerCase().trim().equalsIgnoreCase("something")) {
question.put("value", 21);
} else if (value.toLowerCase().trim().equalsIgnoreCase("something")) {
question.put("value", 22);
} else if (value.toLowerCase().trim().equalsIgnoreCase("something")) {
question.put("value", 23);
}
returnValue = "";
dataArray.put(9, question);
question.put("textvalue", value);
}
submitData.put("data", dataArray);
SaveSharedPreference.setUserResponse(context, submitData.toString());
} catch (Exception e) {
e.printStackTrace();
}
return returnValue;
}
}
prev.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int prevQuestion = (Survey.prev(1, context));
String val=Survey.userValue(prevQuestion,context);
Log.d(TAG,"prevQusetionValue :" +val);
Log.d(TAG, "prevQuestion : " + String.valueOf(prevQuestion));
if (9 == prevQuestion) {
Intent intent = new Intent(SurveryQuestion1.this, SurveryQuestion9.class);
intent.putExtra("value",val);
startActivity(intent);
finish();
}
}
});
next.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int selectedId = radioGroup.getCheckedRadioButtonId();
if (-1 == selectedId) {
Toast.makeText(SurveryQuestion1.this, "Please answer to proceed", Toast.LENGTH_LONG).show();
} else {
radioButton = (RadioButton) findViewById(selectedId);
String answer = radioButton.getText().toString().toLowerCase().trim();
Log.d(TAG, "Answer : " + answer);
if ((null != answer) && (answer.length() > 0)) {
String nextQuestion = Survey.next(1, answer, context);
if (2 == Integer.valueOf(nextQuestion)) {
Intent intent = new Intent(SurveryQuestion1.this, SurveryQuestion2.class);
startActivity(intent);
finish();
} else if (5 == Integer.valueOf(nextQuestion)) {
Intent intent = new Intent(SurveryQuestion1.this, SurveryQuestion5.class);
startActivity(intent);
finish();
}
}
}
}
});
Class Xyz extends Activity
{
int counter=0;
onCreate()
{
loadView(0);
}
loadView(int index)
{
//if value is already saved then rtetrieve from model or load with default value
}
// called on next button click
next()
{
index++;
loadView(index);
}
// called on previous button click
previous()
{
index--;
loadView(index);
}
save()
{//save in model }
}
创建单个活动并为每个问题添加视图。有一个全局计数器和next()和previous()方法。加载第一个问题的计数器==0的视图,并将响应保存在模型中。按下下一步按钮时,调用next()并递增计数器,添加带有下一个问题的视图。若转到上一步,则从模型中获取保存的数据,并用该值更新单选按钮。 这将使您的代码易于管理,并且可以在以后进行扩展,而无需任何额外的工作
public class Survey {
private static JSONObject survey_response = new JSONObject();
private static String TAG = "HS_" + Survey.class.getSimpleName();
public static void init_response_object(Context context) {
try {
if ((null == SaveSharedPreference.getUserResponse(context)) || (SaveSharedPreference.getUserResponse(context).length() == 0)) {
JSONArray question_array = new JSONArray();
JSONObject question = new JSONObject();
question.put("qid", 1);
question.put("type", "multiple_choice");
question.put("value", "");
question.put("textvalue", "");
question_array.put(question);
question = new JSONObject();
question.put("qid", 2);
question.put("type", "image");
question.put("value", "");
question.put("textvalue", "");
question_array.put(question);
question = new JSONObject();
question.put("qid", 3);
question.put("type", "multiple_choice");
question.put("value", "");
question.put("textvalue", "");
question_array.put(question);
question = new JSONObject();
question.put("qid", 4);
question.put("type", "multiple_choice");
question.put("value", "");
question.put("textvalue", "");
question_array.put(question);
question = new JSONObject();
question.put("qid", 5);
question.put("type", "multiple_choice");
question.put("value", "");
question.put("textvalue", "");
question_array.put(question);
question = new JSONObject();
question.put("qid", 6);
question.put("type", "multiple_choice");
question.put("value", "");
question.put("textvalue", "");
question_array.put(question);
question = new JSONObject();
question.put("qid", 7);
question.put("type", "image");
question.put("value", "");
question.put("textvalue", "");
question_array.put(question);
question = new JSONObject();
question.put("qid", 8);
question.put("type", "text");
question.put("value", "");
question.put("textvalue", "");
question_array.put(question);
question = new JSONObject();
question.put("qid", 9);
question.put("type", "multiple_choice");
question.put("value", "");
question.put("textvalue", "");
question_array.put(question);
question = new JSONObject();
question.put("qid", 10);
question.put("type", "multiple_choice");
question.put("value", "");
question.put("textvalue", "");
question_array.put(question);
survey_response.put("urn", "nill");
survey_response.put("data", question_array);
SaveSharedPreference.setUserResponse(context, survey_response.toString());
Log.d(TAG + "_SR", survey_response.toString());
}
} catch (Exception e) {
e.printStackTrace();
}
}
public static void manageAnswers(int qid, String value, Context context) {
try {
JSONObject userResponse = SaveSharedPreference.getUserResponse(context);
JSONArray questions = userResponse.getJSONArray("data");
if (1 == qid) {
JSONObject question1 = questions.getJSONObject(0);
if (qid == question1.getInt("qid")) {
if (value.equalsIgnoreCase("no")) {
JSONObject question2 = questions.getJSONObject(1);
question2.put("value", "");
question2.put("textvalue", "");
questions.put(1, question2);
JSONObject question3 = questions.getJSONObject(2);
question3.put("value", "");
question3.put("textvalue", "");
questions.put(2, question3);
JSONObject question4 = questions.getJSONObject(3);
question4.put("value", "");
question4.put("textvalue", "");
questions.put(3, question4);
Log.d(TAG, "Q1 Ans is NO, hence resetting other questions - " + questions.toString());
userResponse.put("data", questions);
SaveSharedPreference.setUserResponse(context, userResponse.toString());
} else {
Log.d(TAG, "Ans : yes");
}
} else {
Log.d(TAG, "ERROR, MISMATCH IN qid / index");
}
} else if (3 == qid) {
JSONObject question3 = questions.getJSONObject(2);
if (qid == question3.getInt("qid")) {
if (value.equalsIgnoreCase("yes")) {
JSONObject question4 = questions.getJSONObject(3);
question4.put("value", "");
question4.put("textvalue", "");
questions.put(3, question4);
JSONObject question5 = questions.getJSONObject(4);
question5.put("value", "");
question5.put("textvalue", "");
questions.put(4, question5);
Log.d(TAG, "Q3 Ans is YES, hence resetting other questions - " + questions.toString());
userResponse.put("data", questions);
SaveSharedPreference.setUserResponse(context, userResponse.toString());
} else {
Log.d(TAG, "Ans : no");
}
} else {
Log.d(TAG, "ERROR, MISMATCH IN qid / index");
}
} else if (6 == qid) {
JSONObject question6 = questions.getJSONObject(5);
if (qid == question6.getInt("qid")) {
if (value.equalsIgnoreCase("no")) {
JSONObject question7 = questions.getJSONObject(6);
question7.put("value", "");
question7.put("textvalue", "");
questions.put(6, question7);
Log.d(TAG, "Q6 Ans is NO, hence resetting other questions - " + questions.toString());
userResponse.put("data", questions);
SaveSharedPreference.setUserResponse(context, userResponse.toString());
} else {
Log.d(TAG, "Ans : yes");
}
} else {
Log.d(TAG, "ERROR, MISMATCH IN qid / index");
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
//using this as uservalue to set the radiobutton
public static String userValue(int prevQuestion,Context context) {
String textValue = null;
try {
JSONObject userVal = SaveSharedPreference.getUserResponse(context);
Log.d(TAG, "userVal:" + userVal.toString());
JSONArray userTextVal = userVal.getJSONArray("data");
Log.d(TAG, "userTextValue" + userTextVal.toString());
for (int i = 0; i < userTextVal.length(); i++) {
JSONObject us = userTextVal.getJSONObject(i);
int quet = us.getInt("qid");
if (quet == prevQuestion) {
Log.d(TAG, "qId :" + quet);
Log.d(TAG, "textvalue :" + us.getString("textvalue"));
textValue = us.getString("textvalue");
}
}
} catch (Exception e) {
e.printStackTrace();
}
return textValue;
}
public static int prev(int qid, Context context) {
int returnValue = -1;
int count;
try {
JSONArray userPos = SaveSharedPreference.getUserResponsePosition(context);
/*ArrayList<String> pos = new ArrayList<>();
for (int i = 0; i < userPos.length(); i++) {
pos.add(userPos.getString(i).trim());
}*/
// count = pos.size();
count = userPos.length();
Log.d(TAG, "userPos : " + userPos.toString());
Log.d(TAG, "count : " + count);
if (count > 0) {
// returnValue = Integer.parseInt((pos.get(count - 1)));
returnValue = (int) userPos.get(count - 1);
Log.d(TAG, "position : " + returnValue);
//resetting the position
userPos.remove(count - 1);
SaveSharedPreference.setUserResponsePosition(context, userPos.toString());
} else {
returnValue = -1;
}
} catch (Exception e) {
e.printStackTrace();
}
return returnValue;
}
public static String next(int qid, String value, Context context) {
// RESET UNWANTED ANSWERS
Survey.manageAnswers(qid, value, context);
String returnValue = "";
JSONArray positionArray = SaveSharedPreference.getUserResponsePosition(context);
if (null == positionArray || positionArray.length() > 8) {
positionArray = new JSONArray();
}
positionArray.put(qid);
SaveSharedPreference.setUserResponsePosition(context, positionArray.toString());
try {
JSONObject submitData = SaveSharedPreference.getUserResponse(context);
submitData.put("urn", SaveSharedPreference.getCurrentURN(context));
JSONArray dataArray = submitData.getJSONArray("data");
if (1 == qid) {
JSONObject question = dataArray.getJSONObject(0);
question.put("qid", qid);
question.put("type", "multiple_choice");
if (value.toLowerCase().equals("yes")) {
question.put("value", 1);
returnValue = "2";
} else if (value.toLowerCase().equals("no")) {
question.put("value", 2);
returnValue = "5";
}
dataArray.put(0, question);
question.put("textvalue", value);
} else if (2 == qid) {
JSONObject question = dataArray.getJSONObject(1);
question.put("qid", qid);
question.put("type", "image");
question.put("value", value);
returnValue = "3";
dataArray.put(1, question);
question.put("textvalue", value);
} else if (3 == qid) {
JSONObject question = dataArray.getJSONObject(2);
question.put("qid", qid);
question.put("type", "multiple_choice");
if (value.toLowerCase().equals("yes")) {
question.put("value", 3);
returnValue = "6";
} else if (value.toLowerCase().equals("no")) {
question.put("value", 4);
returnValue = "4";
}
dataArray.put(2, question);
question.put("textvalue", value);
}
.
.
.
.
.
.
.
} else if (10 == qid) {
JSONObject question = dataArray.getJSONObject(9);
question.put("qid", qid);
question.put("type", "multiple_choice");
if (value.toLowerCase().trim().equalsIgnoreCase("something")) {
question.put("value", 19);
} else if (value.toLowerCase().trim().equalsIgnoreCase("something")) {
question.put("value", 20);
} else if (value.toLowerCase().trim().equalsIgnoreCase("something")) {
question.put("value", 21);
} else if (value.toLowerCase().trim().equalsIgnoreCase("something")) {
question.put("value", 22);
} else if (value.toLowerCase().trim().equalsIgnoreCase("something")) {
question.put("value", 23);
}
returnValue = "";
dataArray.put(9, question);
question.put("textvalue", value);
}
submitData.put("data", dataArray);
SaveSharedPreference.setUserResponse(context, submitData.toString());
} catch (Exception e) {
e.printStackTrace();
}
return returnValue;
}
}
prev.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int prevQuestion = (Survey.prev(1, context));
String val=Survey.userValue(prevQuestion,context);
Log.d(TAG,"prevQusetionValue :" +val);
Log.d(TAG, "prevQuestion : " + String.valueOf(prevQuestion));
if (9 == prevQuestion) {
Intent intent = new Intent(SurveryQuestion1.this, SurveryQuestion9.class);
intent.putExtra("value",val);
startActivity(intent);
finish();
}
}
});
next.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int selectedId = radioGroup.getCheckedRadioButtonId();
if (-1 == selectedId) {
Toast.makeText(SurveryQuestion1.this, "Please answer to proceed", Toast.LENGTH_LONG).show();
} else {
radioButton = (RadioButton) findViewById(selectedId);
String answer = radioButton.getText().toString().toLowerCase().trim();
Log.d(TAG, "Answer : " + answer);
if ((null != answer) && (answer.length() > 0)) {
String nextQuestion = Survey.next(1, answer, context);
if (2 == Integer.valueOf(nextQuestion)) {
Intent intent = new Intent(SurveryQuestion1.this, SurveryQuestion2.class);
startActivity(intent);
finish();
} else if (5 == Integer.valueOf(nextQuestion)) {
Intent intent = new Intent(SurveryQuestion1.this, SurveryQuestion5.class);
startActivity(intent);
finish();
}
}
}
}
});
Class Xyz extends Activity
{
int counter=0;
onCreate()
{
loadView(0);
}
loadView(int index)
{
//if value is already saved then rtetrieve from model or load with default value
}
// called on next button click
next()
{
index++;
loadView(index);
}
// called on previous button click
previous()
{
index--;
loadView(index);
}
save()
{//save in model }
}
提前谢谢。请重新格式化您的问题,您没有正确缩进。您可以简单地告诉我有什么问题。如何解决该问题。。请给我一些提示…@GrayCygnussee“}”挂在外面?…你应该缩进(每层4个空格)正确的代码,我看到你在每行上漏掉了4个空格,所以是在同一个级别上。我已经重新格式化了问题。你们能帮我吗?@GrayCygnusThanks请先重新格式化你的问题,你没有正确缩进。可以简单地告诉我有什么问题。如何解决这个问题。请给我一些提示…@GrayCygnussee that“}“出去玩?”?。。。你应该正确缩进(每级4个空格)你的代码,我发现你每行都漏掉了4个空格,所以这是在同一个级别我已经重新格式化了问题..你们能帮我吗..@graycygnus是的..我想创建这样的代码。。现在,我可以在新活动中提示设置单选按钮的值。请检查我的问题,我已经在@PayalWell添加了一个空指针异常部分,请参考此链接:-ya,这是通过单选按钮的一种方式。如果我想把单选按钮传递给以前的活动,如果把StutyQuast1作为第一个活动,那么StutyQuase2.java作为第二个。这是将单选按钮传递给下一个活动的一种方式。如果我想把单选按钮传递给以前的活动,如果把StutyQuasd1作为第一个活动,那么将StutyQuase2.java作为第二个活动。从surveyquestion2,我希望它传递到surveyquestion1的选定值@Payalyes这是真的..我想创建这样的代码。。现在,我可以在新活动中提示设置单选按钮的值。请检查我的问题,我已经在@PayalWell添加了一个空指针异常部分,请参考此链接:-ya,这是通过单选按钮的一种方式。如果我想把单选按钮传递给以前的活动,如果把StutyQuast1作为第一个活动,那么StutyQuase2.java作为第二个。这是将单选按钮传递给下一个活动的一种方式。如果我想把单选按钮传递给以前的活动,如果把StutyQuasd1作为第一个活动,那么将StutyQuase2.java作为第二个活动。从surveyquestion2,我希望它传递到surveyquestion1的选定值@帕亚尔