如何存储活动中的值,以便以后使用?

时间:2019-05-21 07:23:10

标签: android

我想存储一个活动中的一些值,以便当我离开该活动时,它们仍然显示在其中。

protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_third);

        Button AddButton = (Button) findViewById(R.id.AddButton);
        AddButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                EditText firstNumEditText = (EditText) findViewById(R.id.firstNumEditText);
                EditText secondNumEditText = (EditText) findViewById(R.id.secondNumEditText);
                TextView ResultTxtView = (TextView) findViewById(R.id.ResultTxtView);

                int num1 = Integer.parseInt(firstNumEditText.getText().toString());
                int num2 = Integer.parseInt(secondNumEditText.getText().toString());
                int result = num1 + num2;
                ResultTxtView.setText(result + "");

            }
        });

在这种情况下,我只想保存num1num2result的值。我希望这样,以便如果我导航回到主菜单,或者如果我去做其他应用程序并明天返回,那么这些值仍然会存在。

5 个答案:

答案 0 :(得分:1)

您可以使用SharedPreferences存储这些值。

protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_third);

        Button AddButton = (Button) findViewById(R.id.AddButton);
        AddButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                EditText firstNumEditText = (EditText) findViewById(R.id.firstNumEditText);
                EditText secondNumEditText = (EditText) findViewById(R.id.secondNumEditText);
                TextView ResultTxtView = (TextView) findViewById(R.id.ResultTxtView);

                int num1 = Integer.parseInt(firstNumEditText.getText().toString());
                int num2 = Integer.parseInt(secondNumEditText.getText().toString());
                int result = num1 + num2;
                ResultTxtView.setText(result + "");
                // You can store these values here
                // ...
            }
        });

protected void onResume() {
    // And read these values here and set to your ResultTxtView.
    // ...
}

答案 1 :(得分:1)

您可以在应用程序中使用共享首选项来保存数据,并稍后使用相同的数据,如下所述:

 SharedPreferences sp = getSharedPreferences("Data",Context.MODE_PRIVATE);
 SharedPreferences.Editor editor = sp.edit();
        editor.putString("Name", "Alex");
        editor.putString("Email", "alex@gmail.com");
        editor.commit();

然后,如果要在另一个活动中获取相同的数据,请执行以下操作:

SharedPreferences sp= ActvivityA.this.getSharedPreferences("Data",Context.MODE_PRIVATE);
String name = sp.getString("Name");
String email = sp.getString("Email");

这些数据将一直保存,直到您不清除应用程序的缓存或不安装应用程序的新更新为止,这样您就可以在应用程序中的任何位置使用此数据。

答案 2 :(得分:1)

在这种情况下,我只想保存num1,num2和result的值。我希望这样做,以便如果我导航回到主菜单,或者如果我去做一些其他应用并返回明天,则这些值仍然会存在。

当您需要在应用程序启动期间保留这些值时,则可以使用共享首选项或SQLite / Room之类的数据存储。

共享首选项:如果存储的值是键值对且大小受限制且无需缩放,则共享首选项将满足您的需求。

SqLite :如果存储的数据会扩展并且随着时间的推移会变得更大,那么您需要查看SQLite之类的数据存储,您可以在其中执行异步操作。

答案 3 :(得分:0)

在扩展应用程序的类上创建并创建变量以保存特定值,然后在清单中注册该类 在应用程序标记的清单中,指定您的应用程序类名称

public class MyApplication extends Application {
private MyApplication sInstance;
int result;
//write getter setter for result variable same for num1 and num2
@Override
public void onCreate() {
    super.onCreate();
    sInstance = this;
}
public static MyApplication getInstance() {
    return sInstance;
}
}

在onClick中设置该变量值,例如MyApplication.getInstnce().setResult(); 并在MyCreate.getInstance()。getResult();中设置textview值的onCreate中;

答案 4 :(得分:0)

使用以下方法通过SharedPreferences保存/检索字符串

 public static int getIntPreferences(Context context,String key) {
    SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(context)
    int savedPref = sharedPreferences.getInt(key, null);
    return savedPref;
}

public static void saveIntPreferences(Context context,String key, int value) {
    SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(context)
    SharedPreferences.Editor editor = sharedPreferences.edit();
    editor.putInt(key, value);
    editor.commit();
}

离开第一个活动时,使用saveIntPreferences保存num1,num2和结果。

回到第一个活动后,您可以使用getIntPreferences获取保存的值