Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/225.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共享首选项_Android_Android Edittext_Sharedpreferences - Fatal编程技术网

重新创建活动时Android共享首选项

重新创建活动时Android共享首选项,android,android-edittext,sharedpreferences,Android,Android Edittext,Sharedpreferences,嗨,在我的应用程序中,我使用了两个主题。 当主题发生更改时,将重新创建活动。此时,我无法恢复编辑文本值 @Override protected void onResume() { SharedPreferences mSharedPreferences = getSharedPreferences( Constants.PREFERENCE_FILENAME, Activity.MODE_PRIVAT

嗨,在我的应用程序中,我使用了两个主题。 当主题发生更改时,将重新创建活动。此时,我无法恢复编辑文本值

      @Override
        protected void onResume() {


            SharedPreferences mSharedPreferences = getSharedPreferences(
                    Constants.PREFERENCE_FILENAME, Activity.MODE_PRIVATE);

            edt_kilo.setText(mSharedPreferences.getString(Constants.KILO_VAL,""));
            edt_pound.setText(mSharedPreferences.getString(Constants.POUND_VAL,""));

            if ((edt_centimeter.getText().toString().length() > 0)
                    || (edt_feet.getText().toString().length() > 0)
                    || (edt_inches.getText().toString().length() > 0)) {
                imagelayout.setVisibility(View.VISIBLE);

                super.onResume();
            }
        }

        @Override
        protected void onPause() {
            super.onPause();

            SharedPreferences.Editor edit = mSharedPref.edit();
            edit.putString(Constants.KILO_VAL, edt_kilo.getText().toString());
edit.putString(Constants.POUND_VAL,edt_pound.getText().toString());

            edit.commit();

        }

    @Override
        public void onBackPressed() {

                this.finish();
        }
上面代码的问题是,即使在按下设备的“后退”按钮完成活动后,值仍然保留,这是我不想要的

此外,当我“清除”编辑文本中的值时,当我按下设备的“返回”按钮时,以及当我再次返回时,相同的值仍然存在

如何处理这种情况

像这样尝试:

public class TestActivity extends Activity{

    private String etFirstValue="";
    private String etSecondValue="";
    private EditText etTwo,etOne;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //initaialize views here
    }

    /* (non-Javadoc)
     * @see android.app.Activity#onRestoreInstanceState(android.os.Bundle)
     */
    @Override
    protected void onRestoreInstanceState(Bundle savedInstanceState) {
        super.onRestoreInstanceState(savedInstanceState);
        etFirstValue = savedInstanceState.getString("firstEditTextKey");
        etSecondValue = savedInstanceState.getString("secondEditTextKey");
    }

    /* (non-Javadoc)
     * @see android.app.Activity#onSaveInstanceState(android.os.Bundle)
     */
    @Override
    protected void onSaveInstanceState(Bundle outState) {
        outState.putString("firstEditTextKey", "value");
        outState.putString("secondEditTextKey", "value");
        super.onSaveInstanceState(outState);
    }


    @Override
    protected void onResume() {
        super.onResume();
        //set the values to edit text
        etOne.setText(etFirstValue);
        etTwo.setText(etFirstValue);

    }

}

有关简要说明,您可以浏览以下链接:

这是因为您正在设置共享首选项的值,并且在关闭和打开应用程序的活动时,共享首选项不会被清除


如果可以的话,您可以清除首选项,也可以在onStop()中为编辑文本设置空值。

我使用了您的方法,但当我更改主题时,这些值不会出现在相应的edittextwhat中?我尝试在onStop()方法中设置空值并清除共享首选项,但是,当活动得到重建时,山谷应该留下来,但这不会发生