更改TextView并保存在SharedPreferences上

时间:2018-06-14 03:59:24

标签: android textview sharedpreferences

我有一个TextView,它包含一个文本,我想在按钮点击时更改它并将其保存在sharedpreferences上,直到应用程序重新启动,然后它将恢复为默认文本。

这是我的代码:

TextView questionText = (TextView)findViewById(R.id.perso);
questionText.setText("Default text");
Button button = (Button) findViewById(R.id.button1);

button.setOnClickListener(new View.OnClickListener() {

        public void onClick(View v) {
            resetConsent();
            questionText.setText("You clicked on the button");


        }
    });

3 个答案:

答案 0 :(得分:0)

创建一个扩展Application类的单个类,这将维持该值,直到您的应用程序被打开,并且还可以在您的应用程序中的不同活动中访问。如果您真的需要使用sharedPreferences,可以使用相同的概念进行扩展。

有关androids Application class here

的更多信息
public class Mydata extends Application {
    private static Mydata d;
    private static String textVal;
    public Mydata getInstance(){
        return d;
    }
    @Override
    public void onCreate() {
        super.onCreate();
        d= this;
    }
}

单击该按钮可将数据保存在单个班级中。

        public void onClick(View v) {
            resetConsent();
            questionText.setText("You clicked on the button");
            Mydata.textVal=questionText.getText().toString();
        }
    });

在onCreate()方法中,将TextView中的值设置为:

  questionText.setText(Mydata.textVal);

您还可以查看新的LifeCycle安卓库:https://developer.android.com/topic/libraries/architecture/lifecycle

答案 1 :(得分:0)

只需使用SharePreferences文档中的代码here你可以看到代码snipet在链接中读取和写入而不是使用putInt和getInt使用putString和getString你需要一个Key来识别值你刚刚救了。

答案 2 :(得分:0)

这是示例代码,

    public class MainActivity extends AppCompatActivity {

    private static final String TAG =MainActivity.class.getSimpleName() ;
    private  TextView questionText ;
    private   Button button ;

    @Override
    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        Log.v(TAG,"onCreate");
        setContentView(R.layout.activity_main);
        button = findViewById(R.id.button);
        questionText = findViewById(R.id.perso);
        questionText.setText("Default text");
        //Setting curent text into the shared preferance
        setSharedpreferance("ButtonText1",questionText.getText().toString());
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {

                questionText.setText("You clicked on the button");
                setSharedpreferance("ButtonText1",questionText.getText().toString());
                Log.v(TAG,"Sharedpref value"+getSharedpreferance("ButtonText1"));
            }
        });
    }


    @Override
    protected void onResume() {

        super.onResume();
        Log.v(TAG,"onResume");
        questionText.setText(getSharedpreferance("ButtonText1"));
    }

    private void setSharedpreferance(String key, String value)
    {
        SharedPreferences pref = getApplicationContext().getSharedPreferences("MyPref", MODE_PRIVATE);
        SharedPreferences.Editor editor = pref.edit();
        editor.putString(key, value);  // Saving string
        // Save the changes in SharedPreferences
        editor.apply();
    }

    private  String getSharedpreferance(String key){
        //To get the sharedpreferance value
        SharedPreferences pref = getApplicationContext().getSharedPreferences("MyPref", MODE_PRIVATE);
        return pref.getString(key, null);
    }
}

您应该查看android活动生命周期  当一个新活动创建时,如果OnResume()在Activity类中可用,它将调用以下内容。 Oncreate->的onResume