我试图为我的应用程序制作 EULA,但我们合作的不同国家/地区有不同的 EULA。
我的想法是我在共享首选项中保存一个字符串,例如南非的 ZA 和肯尼亚的 KE。因此,如果您单击南非按钮,它将在共享首选项中将字符串保存为 ZA,肯尼亚也是如此。单击按钮后,新活动将通过从共享首选项中提取 ZA 或 KE 字符串来加载相应的 EULA。这是我目前所拥有的:
Country_select.java
public class country_select extends Activity {
private static final String TAG = "Logs";
public static final String PREFS_NAME = "PrefsFile";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_country_select);
final Button za_button = (Button) findViewById(R.id.btn_za);
Button ke_button = (Button) findViewById(R.id.btn_ke);
Log.i(TAG, "created buttons");
za_button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
SharedPreferences prefs = getSharedPreferences(PREFS_NAME, Context.MODE_PRIVATE);
SharedPreferences.Editor editor = prefs.edit();
editor.putString("Country_Selected", "ZA");
editor.commit();
}
});
Log.i(TAG, "set button settings for ZA");
ke_button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
SharedPreferences prefs = getSharedPreferences(PREFS_NAME, Context.MODE_PRIVATE);
SharedPreferences.Editor editor = prefs.edit();
editor.putString("Country_Selected", "KE");
editor.commit();
}
});
Log.i(TAG, "set button settings for KE");
}
我可能完全不正确,但在布局文件中有 2 个按钮,一个用于 KE,一个用于 ZA。
我希望它,当加载新活动以读取共享首选项时,它是否有 ZA 或 KE?我在这里所做的是正确的吗?
谢谢
我认为你最好使用 IntentExtras
,在第一个活动中单击国家/地区按钮时将值存储在变量中,当您想启动新活动时,将数据作为意图传递:
Intent intent= new Intent(getActivity(), NewActivity.class);
intent.putExtra("country", countryCode);
startActivity(intent);
然后在新活动中,您可以像这样检索值:
String countryCode = getIntent().getExtras().getString("country");
为了在整个应用程序中保持共享首选项,我以这种方式使用它,看看
我将 AppPrefes 类保存为包中的单独类
public class AppPrefes {
private SharedPreferences appSharedPrefs;
private Editor prefsEditor;
public AppPrefes(Context context, String Preferncename) {
this.appSharedPrefs = context.getSharedPreferences(Preferncename,
Activity.MODE_PRIVATE);
this.prefsEditor = appSharedPrefs.edit();
}
/****
*
* getdata() get the value from the preference
*
* */
public String getData(String key) {
return appSharedPrefs.getString(key, "");
}
public Integer getIntData(String key) {
return appSharedPrefs.getInt(key, 0);
}
/****
*
* SaveData() save the value to the preference
*
* */
public void SaveData(String Tag, String text) {
prefsEditor.putString(Tag, text);
prefsEditor.commit();
}
public void SaveIntData(String key, int value) {
prefsEditor.putInt(key, value);
prefsEditor.commit();
}
/**
* delete all AppPreference
*/
public void deleteAll() {
this.prefsEditor = appSharedPrefs.edit();
this.prefsEditor.clear();
this.prefsEditor.commit();
}
在您的活动或片段中,您想获取或保存数据,只需像这样使用它
Decalre 一个对象 for AppPrefes 类
AppPrefes appPref;
在创建中初始化
appPref = new AppPrefes(getActivity(), "type name of your preference");
将数据保存到首选项使用
appPref.SaveData("tag_name", "value to be saved);
从首选项获取数据
appPref.getData("tag_name");
您还可以保存整数值并清除所有首选项值(如有必要),只需调用 apporopriate 方法即可。
是的,存储部分是正确的。现在,您将需要访问新活动中的存储值。
例-
SharedPreferences prefs = getSharedPreferences(PREFS_NAME, Context.MODE_PRIVATE);
String storedCountry = sharedpreferences.getString("Country_Selected"); // could be null value if there is no value stored with Country_Selected tag.