在两个类之间共享数据的方法

时间:2019-04-22 08:08:31

标签: android

我正在编写一个必须在两个类之间共享数据的应用程序。我尝试使用getter和setter方法,但数据不会保留。使用Intent,我看到当我要接收数据时,使用16以上的API已弃用getIntent()函数。

还有其他方法可以在类之间传递数据吗?

2 个答案:

答案 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);

   }


}

让我知道您是否有任何疑问。