Android 当我移动到另一个活动并返回时,片段editText数据被清除

Android 当我移动到另一个活动并返回时,片段editText数据被清除,android,android-fragments,android-edittext,android-viewpager,Android,Android Fragments,Android Edittext,Android Viewpager,我有一个包含WebView、Edittext1、Edittext2、复选框和按钮的片段活动。当我单击片段中的按钮时,它将移动到Results\u活动。若我点击结果活动中的按钮,它将返回到碎片活动。 但我的edittext值在向后移动时被清除 片段活动xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

我有一个包含WebView、Edittext1、Edittext2、复选框和按钮的片段活动。当我单击片段中的按钮时,它将移动到Results\u活动。若我点击结果活动中的按钮,它将返回到碎片活动。 但我的edittext值在向后移动时被清除

片段活动xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@android:color/background_light"
    android:orientation="vertical">


    <LinearLayout
        android:id="@+id/questionContainer"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1">

        <WebView
            android:id="@+id/questionWV"
            android:layout_width="match_parent"
            android:layout_height="match_parent" />
    </LinearLayout>

    <LinearLayout
        android:id="@+id/ansA_container"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:paddingLeft="5dp"
        android:paddingTop="5dp"
        android:paddingRight="5dp"
        android:paddingBottom="5dp">

        <EditText
            android:id="@+id/ansA"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:ems="10"
            android:freezesText="true"
            android:hint="Enter answer here..."
            android:minWidth="50dp"
            android:minHeight="50dp"
            android:scrollbars="vertical"
            android:textAppearance="@android:style/TextAppearance.Medium" />
    </LinearLayout>

    <LinearLayout
        android:id="@+id/ansB_container"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:paddingLeft="5dp"
        android:paddingTop="5dp"
        android:paddingRight="5dp"
        android:paddingBottom="5dp">

        <EditText
            android:id="@+id/ansB"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:ems="10"
            android:freezesText="true"
            android:hint="Enter answer here..."
            android:minWidth="50dp"
            android:minHeight="50dp"
            android:scrollbars="vertical"
            android:textAppearance="@android:style/TextAppearance.Medium" />
    </LinearLayout>

    <LinearLayout
        android:id="@+id/answers_container"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:paddingLeft="5dp"
        android:paddingTop="5dp"
        android:paddingRight="5dp"
        android:paddingBottom="5dp">

        <RelativeLayout
            android:id="@+id/answer_a_container"
            android:layout_width="fill_parent"
            android:layout_height="match_parent"
            android:layout_gravity="top"
            android:layout_weight="1">

            <CheckBox
                android:id="@+id/answerA"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginStart="15dp"
                android:hint="0"
                android:maxLines="100"
                android:minWidth="50dp"
                android:minHeight="50dp"
                android:scrollbars="vertical"
                android:text="Varianta A"
                android:textAppearance="@android:style/TextAppearance.Medium" />

        </RelativeLayout>

        <RelativeLayout
            android:id="@+id/answer_b_container"
            android:layout_width="fill_parent"
            android:layout_height="match_parent"
            android:layout_weight="1">

            <CheckBox
                android:id="@+id/answerB"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentEnd="false"
                android:layout_marginStart="15dp"
                android:hint="1"
                android:maxLines="100"
                android:minWidth="50dp"
                android:minHeight="50dp"
                android:scrollbars="vertical"
                android:text="Varianta B"
                android:textAppearance="@android:style/TextAppearance.Medium" />

        </RelativeLayout>

        <RelativeLayout
            android:id="@+id/answer_c_container"
            android:layout_width="fill_parent"
            android:layout_height="match_parent"
            android:layout_weight="1">

            <CheckBox
                android:id="@+id/answerC"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginStart="15dp"
                android:hint="2"
                android:maxLines="100"
                android:minWidth="50dp"
                android:minHeight="50dp"
                android:scrollbars="vertical"
                android:text="Varianta C"
                android:textAppearance="@android:style/TextAppearance.Medium" />

        </RelativeLayout>


        <RelativeLayout
            android:id="@+id/answer_d_container"
            android:layout_width="fill_parent"
            android:layout_height="match_parent"
            android:layout_weight="1">

            <CheckBox
                android:id="@+id/answerD"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginStart="15dp"
                android:hint="3"
                android:maxLines="100"
                android:minWidth="50dp"
                android:minHeight="50dp"
                android:scrollbars="vertical"
                android:text="Varianta D"
                android:textAppearance="@android:style/TextAppearance.Medium" />

        </RelativeLayout>
    </LinearLayout>

    <LinearLayout
        android:id="@+id/footer"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="bottom|center"
        android:orientation="horizontal"
        android:paddingBottom="30dp">

        <Button
            android:id="@+id/btnFinishTest"
            style="@android:style/Widget.Button.Inset"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:background="@drawable/testbutton"
            android:onClick="FinishTest"
            android:paddingLeft="10dp"
            android:paddingRight="10dp"
            android:text="Finish Test" />
        <Button
            android:id="@+id/btnAnswer"
            style="@android:style/Widget.Button.Inset"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:background="@drawable/testbutton"
            android:onClick="SubmitAnswer"
            android:paddingLeft="10dp"
            android:paddingRight="10dp"
            android:text="Submit Answer" />
    </LinearLayout>


</LinearLayout>
<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

<LinearLayout
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:weightSum="1">

    <TextView
        android:id="@+id/textView2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:paddingBottom="10dp"
        android:paddingLeft="30dp"
        android:paddingRight="30dp"
        android:paddingTop="30dp"
        android:text="@string/results"
        android:textColor="#4DAD47"
        android:textSize="20sp"
        android:textStyle="bold|italic" />

    <LinearLayout
        android:orientation="vertical"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center_vertical"
        android:paddingTop="30dp" >

        <LinearLayout
            android:orientation="horizontal"
            android:layout_width="match_parent"
            android:layout_height="wrap_content">

            <LinearLayout
                android:orientation="horizontal"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:layout_weight="1">

                <TextView
                    android:id="@+id/textView3"
                    android:layout_width="match_parent"
                    android:layout_height="match_parent"
                    android:gravity="center_horizontal"
                    android:paddingBottom="20dp"
                    android:text="@string/correct_answers" />
            </LinearLayout>

            <TextView
                android:id="@+id/myTotalAnswers"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:layout_weight="1"
                android:gravity="center_vertical|center_horizontal"
                android:paddingRight="5dp"
                android:text="50/100" />
        </LinearLayout>

        <LinearLayout
            android:orientation="vertical"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:id="@+id/mainContainer"></LinearLayout>

        <LinearLayout
            android:orientation="horizontal"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:gravity="center_horizontal">

            <Button
                android:id="@+id/check_results"
                style="@android:style/Widget.Button.Inset"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginRight="10dp"
                android:background="@drawable/testbutton"
                android:paddingLeft="10dp"
                android:paddingRight="10dp"
                android:text="@string/check_results" />

            <Button
                android:id="@+id/btnMainMenu"
                style="@android:style/Widget.Button.Inset"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginLeft="10dp"
                android:background="@drawable/testbutton"
                android:paddingLeft="10dp"
                android:paddingRight="10dp"
                android:text="@string/main_menu" />
        </LinearLayout>

    </LinearLayout>

</LinearLayout>
</ScrollView>

换成这样的方法,

mainView.findViewById(R.id.check_results).setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
                onBackPressed();
        }
    });

你能分享一下你如何调用新活动以及如何返回到第一个活动吗?我编辑了我的问题并添加了详细信息@Jessem Ben Hamidapublic void FinishTestView v->调用新活动。mainView.findViewByIdR.id.check_results.setOnClickListenernew View.OnClickListener->这将移回片段我尝试了上述代码,但它将移到其他活动。我是在哪里发起碎片活动的?有人能帮忙吗。我把问题简单地贴在这里。
public class QuizActivity2018ii extends AppCompatActivity {
    Spinner spinCategory;
    EditText questionNr;
    ArrayList<String> allCategories;
    int totalQuestions;
    AlertDialog dialog;

    ViewPager pager;
    QuestionPagerAdapter2018ii pagerAdapter;

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

        allCategories = new ArrayList<>(MyServerData2018ii.getInstance().getCategoryList());
        totalQuestions = MyServerData2018ii.getInstance().getTotalQuestions();

        //initialize category spinner
        ArrayAdapter<String> categoryAdapter = new ArrayAdapter<>(this,android.R.layout.simple_spinner_dropdown_item,allCategories);
        spinCategory = (Spinner) findViewById(R.id.category);
        spinCategory.setAdapter(categoryAdapter);
        spinCategory.setSelection(0);

        //set Category spinner callback
        spinCategory.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
            @Override
            public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
                String currentQuestionRealCategory = MyServerData2018ii.getInstance().getQuestionCategory(pager.getCurrentItem());
                String selectedCategory = spinCategory.getItemAtPosition(position).toString();
                if (!selectedCategory.equals(currentQuestionRealCategory)) {
                    int firstQuestionNumberFromCategory = MyServerData2018ii.getInstance().getFirstQuestionNumberFromCategory(selectedCategory);
                    ViewPager pager = (ViewPager) findViewById(R.id.qPager);
                    pager.setCurrentItem(firstQuestionNumberFromCategory, false);
                }
            }

            @Override
            public void onNothingSelected(AdapterView<?> parent) {
            }
        });


        //initialize number
        questionNr = (EditText) findViewById(R.id.dialog_question_number);
        questionNr.clearFocus();
        //set number callbacks
        questionNr.setOnKeyListener(new View.OnKeyListener() {
            @Override
            public boolean onKey(View v, int keyCode, KeyEvent event) {
                if ((keyCode == KeyEvent.KEYCODE_ENTER)) {
                    v.clearFocus();
                    CharSequence s = questionNr.getText();
                    if (!s.toString().isEmpty()) {
                        Integer questionNumber = Integer.parseInt(s.toString());
                        //avoids out of range indexes
                        if (questionNumber > totalQuestions + 1) {
                            questionNumber = totalQuestions;
                        }
                        if (questionNumber < 0) {
                            questionNumber = 1;
                        }
                        //create looping effect
                        if (questionNumber == totalQuestions + 1) {
                            questionNumber = 1;
                            ((EditText)v).setText("1");
                        }
                        if (questionNumber == 0) {
                            questionNumber = totalQuestions;
                            ((EditText)v).setText(String.valueOf(totalQuestions));
                        }
                        ViewPager pager = (ViewPager) findViewById(R.id.qPager);
                        pager.setCurrentItem(questionNumber, false);
                        questionNr.clearFocus();
                    } else {
                        questionNr.setText("1");
                    }
                    InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
                    imm.hideSoftInputFromWindow(v.getWindowToken(), 0);
                }
                return false;
            }
        });
        //initialize pager
        pager = (ViewPager)findViewById(R.id.qPager);
        pagerAdapter = new QuestionPagerAdapter2018ii(getSupportFragmentManager());
        pager.setAdapter(pagerAdapter);
        pager.setCurrentItem(1, false);
        pager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
            @Override
            public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {}
            @Override
            public void onPageSelected(int position) {
                Integer currentQuestion = pager.getCurrentItem();
                //change spinner
                String currentCategory = MyServerData2018ii.getInstance().getQuestionCategory(currentQuestion);
                int categoryPosition = MyServerData2018ii.getInstance().getCategoryList().indexOf(currentCategory);
                spinCategory.setSelection(categoryPosition);

                //change numberPicker
                if(currentQuestion <= 0){currentQuestion = totalQuestions;}
                if(currentQuestion > totalQuestions){currentQuestion = 1;}
                questionNr.setText(currentQuestion.toString());
                questionNr.clearFocus();
                InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
                imm.hideSoftInputFromWindow(questionNr.getWindowToken(), 0);
            }
            @Override
            public void onPageScrollStateChanged(int state) {
                int totalQuestions = MyServerData2018ii.getInstance().getTotalQuestions();
                if (state == ViewPager.SCROLL_STATE_IDLE) {
                    if (pager.getCurrentItem() == totalQuestions + 1) {
                        pager.setCurrentItem(1, false);
                    }
                    if (pager.getCurrentItem() == 0) {
                        pager.setCurrentItem(totalQuestions, false); // false will prevent sliding animation of view pager
                    }
                }
            }
        });

    }

    public void FinishTest(View v){

        //check if there are unanswered questions
        if(MyServerData2018ii.getInstance().getTestState().equals("inProgress")){
            ArrayList<String> UnansweredQuestions = new ArrayList<>();
            LinkedHashMap<String,Object> allQuestions = MyServerData2018ii.getInstance().getAllQuestions();
            for(Map.Entry category: allQuestions.entrySet()){
                Question2018ii[] question2018iis = (Question2018ii[])category.getValue();
                for(int i = 0; i < question2018iis.length; i++){
                    Boolean[] userAnswers = question2018iis[i].getUserAnswers();
                    if(!Arrays.asList(userAnswers).contains(true)){
                        String checkedCategory = (String)category.getKey();
                        Integer questionNumberInList = MyServerData2018ii.getInstance().getQuestionListNumber(checkedCategory,i);
                        UnansweredQuestions.add(String.valueOf(questionNumberInList));
                    }
                }
            }

            if(UnansweredQuestions.size() > 0){
                dialog = new AlertDialog.Builder(this)
                        .create();
                LayoutInflater infl = LayoutInflater.from(this);
                dialog.setView(infl.inflate(R.layout.dialog_message,null));
                dialog.show();
                TextView message = (TextView)dialog.findViewById(R.id.message);
                String unfinished = getResources().getString(R.string.unfinished_text);
                String questions =   TextUtils.join(",",UnansweredQuestions);
                message.setText(unfinished + "\n" + questions + ".");

                dialog.findViewById(R.id.btn_cancel).setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        dialog.dismiss();
                    }
                });
                dialog.findViewById(R.id.btn_ok).setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        dialog.dismiss();
                        showResults();
                    }
                });
            }else{showResults();}

        }else{
            showResults();
        }


    }

    public void showResults(){
        int animationDuration;
        if(MyServerData2018ii.getInstance().getTestState().equals("finished")){
            animationDuration = 10;
        }else{
            animationDuration = 2000;
        }
        View mainView = LayoutInflater.from(this).inflate(R.layout.quiz_activity_show_results,null);
        LinearLayout mainContainer = (LinearLayout)mainView.findViewById(R.id.mainContainer);
        mainView.findViewById(R.id.btnMainMenu).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //finish the test and go to main menu
                Intent Main = new Intent(getApplicationContext(),MainActivity.class);
                finish();
                startActivity(Main);
                MyServerData2018ii.getInstance().setTestState("notStarted");
                MyServerData2018ii.getInstance().clearAnswers();
                Toast.makeText(getBaseContext(),R.string.text_ended,Toast.LENGTH_LONG).show();
            }
        });
        mainView.findViewById(R.id.check_results).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = getIntent();
                finish();
                startActivity(intent);
            }
        });
        Question2018ii[] currentCategory;
        int totalCategoryQuestions;
        int correctCategoryQuestions;
        int totalCorrectQuestions = 0;
        //checking and adding each category
        for(String category: allCategories){
            View categoryContainer = LayoutInflater.from(this).inflate(R.layout.quiz_activity_category_results,null);
            TextView categoryName = (TextView)categoryContainer.findViewById(R.id.categoryName);
            //set name
            categoryName.setText(category);
            currentCategory = MyServerData2018ii.getInstance().getCategory(category);
            totalCategoryQuestions = currentCategory.length;
            //check answers
            correctCategoryQuestions = 0;
            for(int i=0; i < currentCategory.length;i++){
                Boolean isCorrect = Arrays.equals(currentCategory[i].getAllCorrectAnswers(),currentCategory[i].getUserAnswers());
                if(isCorrect){ correctCategoryQuestions++;}
            }
            totalCorrectQuestions += correctCategoryQuestions;

            //set results
            String result = String.valueOf(correctCategoryQuestions) + "/" + String.valueOf(totalCategoryQuestions);
            final ProgressBar progress = (ProgressBar)categoryContainer.findViewById(R.id.progressBar);
            progress.setMax(totalCategoryQuestions*100);
            final TextView myResult = (TextView)categoryContainer.findViewById(R.id.categoryResult);
            final String myResultText = "/" + String.valueOf(totalCategoryQuestions);
            ValueAnimator val = new ValueAnimator();
            val.setObjectValues(0, correctCategoryQuestions*100);
            val.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
                @Override
                public void onAnimationUpdate(ValueAnimator animation) {
                    myResult.setText(String.valueOf((Integer)animation.getAnimatedValue()/100) + myResultText);
                    progress.setProgress( ((Integer) animation.getAnimatedValue()));
                }
            });
            val.setDuration(animationDuration);
            val.start();

            mainContainer.addView(categoryContainer);
        }

        //animate results
        final TextView tvTotalResult =(TextView)mainView.findViewById(R.id.myTotalAnswers);
        final String totalResultS =  "/" + String.valueOf(totalQuestions);
        ValueAnimator totalResultsAnimator = new ValueAnimator();
        totalResultsAnimator.setObjectValues(0, totalCorrectQuestions);
        totalResultsAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
            @Override
            public void onAnimationUpdate(ValueAnimator animation) {
                tvTotalResult.setText(String.valueOf(animation.getAnimatedValue()) + totalResultS);
            }
        });
        totalResultsAnimator.setDuration(animationDuration);
        totalResultsAnimator.start();

        MyServerData2018ii.getInstance().setTestState("finished");
        setContentView(mainView);
    }
}
public class QuestionYearwise extends AppCompatActivity{

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

        Button btn2018ii = (Button)findViewById(R.id.btn2018ii);
        btn2018ii.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent Quiz2018ii = new Intent(getApplicationContext(),QuizActivity2018ii.class);
                MyServerData2018ii.getInstance().setTestState("inProgress");
                startActivity(Quiz2018ii);
            }
        });
    }

}

mainView.findViewById(R.id.check_results).setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
                onBackPressed();
        }
    });