哪些年遇到過的Andriod問題(二)在新開頁面中輸入的值返回到原頁面

  1)在新開頁面中輸入的值返回到原頁面
顯示一個新的屏幕,在這個屏幕上輸入一段話,然後再返回到原先的界面顯示剛纔輸入的那句話。
注意:在第節中頁面跳轉中有一個MainActivity.this.startActivity(intent);這是無返回值的打開頁面,如果想要得到有返回值的頁面就要改爲MainActivity.this.startActivityForResult(intent, 0);

已經可以調出新Activity了,我們看一下執行的結果



想要把輸入的值返回到原來的那個頁面,就一定要在“返回”按鍵中加入點什麼代碼,如下:

    class myButtonOAReturnimplementsandroid.view.View.OnClickListener {

       @Override

       public void onClick(View v) {

          

           String sEdit = sEditText.getText().toString();

           SharedPreferences sp = getSharedPreferences("text", 0);

           SharedPreferences.Editor editor = sp.edit();

           editor.putString("text", sEdit);

           if (editor.commit()) {

              setResult(RESULT_OK);

           }

           finish();

       }

    }

這裏的關鍵是SharedPreferences對象,這是在多個Activity(同一包中)共享數據的方式,本質上它就是一個可以在包的範圍內進行數據共享的文件。

  我們通過一個標籤“text”獲得了和文本相關的那個SharedPreferences對象(“text”僅僅是自己定義的一個標籤),然後給它賦予一個“text”對象值爲當前文本框中輸入的文本。設置完成以後,設置當前Activity的執行結果爲RESULT_OK,再關閉當前的Activity,剩下的事情就可以回到MainActivity這個主界面中去執行了。

MainActivity裏面是不是應該有一個接收這個數據的代碼呢?如下:

    @Override

    protected void onActivityResult(int requestCode,int resultCode, Intent data) {

       if (requestCode == 0 && resultCode == Activity.RESULT_OK) {

           SharedPreferences sp = getSharedPreferences("text", 0);

           maedReveice.setText(sp.getString("text",null));

       }

    }

我們重寫了onActivityResult方法。


發佈了54 篇原創文章 · 獲贊 19 · 訪問量 23萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章