Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android:使用intent传递值,并在单击“上一个”按钮时匹配上一个选定的单选按钮_Android_Json - Fatal编程技术网

Android:使用intent传递值,并在单击“上一个”按钮时匹配上一个选定的单选按钮

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

需要有关在单击“上一步/下一步”按钮上设置单选按钮的帮助。 我正在使用JSON对象创建一个调查问题。对于每个问题,我都创建了一个新的活动,如surveyquestion1.java、surveyquestion2.java、surveyquestion3.java、…、surveyquestion10.java。我试图在json对象中传递问题和radiobutton文本值

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的选定值@帕亚尔