我想存储一个活动中的一些值,以便当我离开该活动时,它们仍然显示在其中。
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 + "");
}
});
在这种情况下,我只想保存num1
,num2
和result
的值。我希望这样,以便如果我导航回到主菜单,或者如果我去做其他应用程序并明天返回,那么这些值仍然会存在。
答案 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获取保存的值