我正在使用一个带有实现OnClickListener
的Activity然后我有:
@Override
protected void onCreate(Bundle savedInstanceState) {
/** Remove title bar */
requestWindowFeature(Window.FEATURE_NO_TITLE);
Utils.onActivityCreateSetTheme(this);
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
/** Themes */
findViewById(R.id.buttonRED).setOnClickListener(this);
findViewById(R.id.buttonGREEN).setOnClickListener(this);
findViewById(R.id.buttonBlue).setOnClickListener(this);
/** Hide Auto Keyboard */
getWindow().setSoftInputMode(
WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
/** The rest of codes*/
InputPrice = (TextView) findViewById(R.id.ePrice);
我有大约15个按钮,6个TextView和1个SeekBar以及一些动画。
然后我的onClick有一些计算
public void onClick(View v) {
try {
double price = Double.parseDouble(ePrice.getText()
.toString());
double percent = Double.parseDouble(ePercent.getText()
.toString());
double priceValue = price * percent / 100.0f;
double percentValue = price - priceValue;
moneyToGet.setText(String.valueOf(priceValue));
moneyToPay.setText(String.valueOf(percentValue));
moneyToGet.setText(String.format("%.02f", priceValue));
moneyToPay.setText(String.format("%.02f", percentValue));
// catch
} catch (NumberFormatException ex) {
// write a message to users
moneyToGet.setText("");
}
}
我想要什么,为什么需要共享偏好设置?
我想在手机中保存我的应用程序的计算和动画数据。因此,即使应用程序被杀死或被破坏,用户也可以获得它们。
我从Android开发人员那里了解到,使用共享首选项的最佳方式是on on on on on on on on is is is is but but but but but but but but but but but but but but but but 我做了一些研究,我下载了一些样本,但没有帮助。
我会感激任何帮助
答案 0 :(得分:0)
SharedPreferences
是保存原始数据的好方法。
您可以按照以下方式使用它:
@Override
protected void onPause(){ //save data in onPause
SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
SharedPreferences.Editor editor = settings.edit();
editor.putInt("price", priceValue);
editor.putInt("percent", percentValue);
editor.commit();
}
@Override
protected void onCreate(){ //load data in onPause
SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
priceValue = settings.getInt("price",0);
percentValue = settings.getInt("percent",0);
}
即使应用被杀死或被破坏,数据也会保存在SharedPreferences
中。只有时间SharedPreferences
消失才能卸载应用程序或清除数据。
答案 1 :(得分:0)
您说要在单击组件后保存计算,这样您应该在您正在使用的onClick()内调用方法。 使用sharedPreferences非常简单,这里有一些示例代码:
public void saveInternetStatusLight(String color){
SharedPreferences sharedPreferences = getSharedPreferences(); //constructor of SharedPreferences
SharedPreferences.Editor editor = sharedPreferences.edit(); // constructor of editor for writing
editor.putString("InternetLight", color); //writing a String with "InternetLight" TAG with the value "color"
editor.commit(); //commit the saved data
}
public String loadInternetStatusLight() {
SharedPreferences sharedPreferences = getSharedPreferences(); //constructor sharedpreferences
return sharedPreferences.getString("InternetLight", "red"); //reading a String with "InternetLigth" TAG with the value, if it's not found it returns the value "red"
}
如果你想分离组件的情况,你也应该在onClick中使用Switch()。
Swith(v.getId())
{
case(R.id.buttonRED)
{
}
//etc
}
答案 2 :(得分:0)
首先,您需要了解这些方法,因为它们是Activity Lifecycle的重要组成部分。其次,示例here为如何打开和关闭SharedPreferences
(onCreate
和onStop
)提供了极好的参考。它还显示了如何在onCreate
中恢复这些已保存的值:
public class Calc extends Activity {
public static final String PREFS_NAME = "MyPrefsFile";
@Override
protected void onCreate(Bundle state){
super.onCreate(state);
. . .
// Restore preferences
SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
boolean silent = settings.getBoolean("silentMode", false);
setSilent(silent);
}
@Override
protected void onStop(){
super.onStop();
// We need an Editor object to make preference changes.
// All objects are from android.context.Context
SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
SharedPreferences.Editor editor = settings.edit();
editor.putBoolean("silentMode", mSilentMode);
// Commit the edits!
editor.commit();
}
}
在您的示例中,您需要在onClick
代码的末尾添加以下内容:
SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
settings.edit().putInt("price", priceValue).putInt("percent", percentValue).commit();
然后在上面的例子中替换这些行:
// Restore preferences
SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
boolean silent = settings.getBoolean("silentMode", false);
setSilent(silent);
使用:
// Restore preferences
SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
int priceValue = settings.getInt("price", 0);
int percentValue = settings.getInt("percent", 0);
moneyToGet.setText(String.format("%.02f", priceValue));
moneyToPay.setText(String.format("%.02f", percentValue));
此外,对于您的问题,您根本不需要覆盖onStop
方法。