在两个类之间共享数据的方法[关闭]

问题描述 投票:-3回答:2

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

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

android
2个回答
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
投票

使用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);

   }


}

如果您有任何疑问,请告诉我。

© www.soinside.com 2019 - 2024. All rights reserved.