我正在编写一个必须在两个类之间共享数据的应用程序。我曾尝试使用getter和setter方法,但数据不会保留存储。使用Intent我看到当我要接收数据时,函数getIntent()不推荐使用超过16的API。
在类之间传递数据还有其他方法吗?
您可以将此数据保存为共享首选项,如下所示: -
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,并将数据保存在您想要的位置,并从您想要的位置获取数据
使用Bundle概念,
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);
}
}
如果您有任何疑问,请告诉我。