哪些年遇到过的Andriod问题(二)在新开页面中输入的值返回到原页面

时间:2023-01-13 08:06:50
  1)在新开页面中输入的值返回到原页面
显示一个新的屏幕,在这个屏幕上输入一段话,然后再返回到原先的界面显示刚才输入的那句话。
注意:在第节中页面跳转中有一个MainActivity.this.startActivity(intent);这是无返回值的打开页面,如果想要得到有返回值的页面就要改为MainActivity.this.startActivityForResult(intent, 0);

已经可以调出新Activity了,我们看一下执行的结果
哪些年遇到过的Andriod问题(二)在新开页面中输入的值返回到原页面
哪些年遇到过的Andriod问题(二)在新开页面中输入的值返回到原页面

想要把输入的值返回到原来的那个页面,就一定要在“返回”按键中加入点什么代码,如下:

    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方法。

哪些年遇到过的Andriod问题(二)在新开页面中输入的值返回到原页面