我正在编写一个必须在两个类之间共享数据的应用程序。我尝试使用getter和setter方法,但数据不会保留。使用Intent,我看到当我要接收数据时,使用16以上的API已弃用getIntent()函数。
还有其他方法可以在类之间传递数据吗?
答案 0 :(得分:2)
您可以按以下方式以粉碎的首选项保存数据:-
public class AppPrefrences {
private static SharedPreferences mPrefs;
private static SharedPreferences.Editor mPrefsEditor;
public static boolean isUserLoggedOut(Context ctx) {
mPrefs = PreferenceManager.getDefaultSharedPreferences(ctx);
return mPrefs.getBoolean("id_logged_in", true);
}
public static void setUserLoggedOut(Context ctx, Boolean value) {
mPrefs = PreferenceManager.getDefaultSharedPreferences(ctx);
mPrefsEditor = mPrefs.edit();
mPrefsEditor.putBoolean("id_logged_in", value);
mPrefsEditor.commit();
}
public static boolean isRequestLoad(Context ctx) {
mPrefs = PreferenceManager.getDefaultSharedPreferences(ctx);
return mPrefs.getBoolean("requestLoad", false);
}
public static void setRequestLoad(Context ctx, Boolean value) {
mPrefs = PreferenceManager.getDefaultSharedPreferences(ctx);
mPrefsEditor = mPrefs.edit();
mPrefsEditor.putBoolean("requestLoad", value);
mPrefsEditor.commit();
}
}
要保存数据:-
setUserLoggedOut(this, true);
获取数据:-
isUserLoggedOut(this);
您可以在此类中创建自己的getter和setter并将数据保存在所需的位置,并从所需的位置获取数据
答案 1 :(得分:1)
使用捆绑包概念,
public class MainActivity extends AppcompatActivity{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button b = findViewByID(R.id.button);
b.setOnclickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent i = new Intent(this,SecondActivity.class);
i.putExtra("data1","Hello");
i.putExtra("data2","Android");
startActivity(i);
}
}
现在在您要接收数据的类中使用Bundle概念
public class SecondActivity extends AppcompatActivity{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Bundle b = getIntent().getExtras();
if(b != null){
String one = b.getString("data1");
String two = b.getString("data2");
Log.e("dataUsingBundle",one + "\n" + two);
}
}
让我知道您是否有任何疑问。