2

我有值strUserKEY我想将此值发送到多个不同的类,因为该值将用于 5 个类的 url,我知道仅使用Intent.putExtra如下方式将值发送到一个类的方法:

Intent policy= new Intent(LoginActivity.this,EpolicyListPolis.class);
        policy.putExtra("etUser",strUser);
        policy.putExtra("key",KEY);
        startActivity(policy);

如何一次将此值发送到多个不同的类?我可以使用 SharedPrefences.. 吗?我在课堂上和我的目标课上写 sharedPrefences 的方式如何?

4

9 回答 9

5

您可以使用SharedPreferences

用于将值存储到SharedPreferences

SharedPreferences settings = getSharedPreferences("PREFS_NAME", 0);
SharedPreferences.Editor editor = settings.edit();
editor.putString("etUser", strUser);
editor.putString("key",KEY);
editor.commit();

只需在调用之前粘贴这些行startActivity(policy);

并从中获取值SharedPreferences

SharedPreferences settings = getSharedPreferences("PREFS_NAME", 0);
String etUser1 = settings.getString("etUser", null);
String key1 = settings.getString("key", null);

并将这些行粘贴到您想要的位置etUser1key1. 您可以SharedPreferences在任何Activity. 如果你不能请看这里。它可能会帮助你。

我希望这能帮到您。

于 2013-05-14T05:14:19.060 回答
2

尝试这个...

使用Intent ...从此类发送值。

Intent policy= new Intent(LoginActivity.this,EpolicyListPolis.class);
    policy.putExtra("key",strUser);
    startActivity(policy);

这类似于:KEY -" key " 和VALUE - strUser并且您使用 KEY 从另一个类中获取此值。

像这样获得价值。

String user = getIntent().getExtras().getString("key",null);

用户中,您获得strUser值。并且如果 strUser 没有传递任何值而不是默认 null(“键”的右侧)为用户分配...。

您需要的所有课程都使用相同的...但请记住所有与KEY一起使用的作品...

因为KEY(一种 ID)仅适用于PutGet特定值.....

于 2013-05-14T05:27:14.167 回答
0

我想告诉你使用 Application 类。从以下链接获取参考的更好主意

维护 Application 类中所有变量的状态

最好选择这个应用程序,因为您可以访问每个类中的所有变量,而无需从意图发送。

这将对您有所帮助。

于 2013-05-14T05:47:18.610 回答
0

如果您使用依赖注入,请创建一个将您的状态保存在值对象中的模型。然后将此模型注入您的活动中。

或者简单地创建一个可以从任何地方引用的 Singleton State 对象。

于 2013-05-14T05:13:11.270 回答
0

你必须在其他活动中得到这些东西——

   Bundle bundle = getIntent().getExtras();
   String user = bundle.getString("etUser");
   String key = bundle.getString("key");

或者,

您可以在一个类中设置这些值,并在需要的任何地方获取它们。

于 2013-05-14T05:14:16.277 回答
0

您可以使用 Bundle 将数据从一个 Activity 类传递到另一个 Activity 类 像这样

  Bundle bundle = new Bundle();
    bundle.putString("Id", videoChannelId);
    bundle.putString("C/V", "C");
    bundle.putString("mode", "ch");
    bundle.putString("code", "LiveTV");
    bundle.putString("urlcount", "2");
    Intent intent = new Intent(First.this,Second.class);
    intent.putExtras(bundle);
    startActivity(intent);

通过提供bundle id来获取第二类中的数据

     Bundle  getBundle = this.getIntent().getExtras();

     name = getBundle.getString("Url") 
      etc......
于 2013-05-14T07:23:45.687 回答
0

我不太确定你想做什么,但是 IMO,如果我将一个变量从一个类使用到另一个类,我会将变量设为静态并从类中“获取”该变量的值..

例如在一个类中,我有一个变量:

public class Login extends Activity {

static String username;

    public void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
       setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
       this.requestWindowFeature(Window.FEATURE_NO_TITLE);
       setContentView(R.layout.login_layout);

       username = "Your Name";
    }

在另一堂课中,我会得到这样的价值;

   String var;
   var = Login.username;

但正如我所读到的,这不是最佳做法。有时它就足够了。

于 2013-05-14T05:19:54.430 回答
0

首先,使用以下getIntent()方法获取启动活动的意图:

Intent intent = getIntent();

如果您的额外数据表示为字符串,那么您可以使用intent.getStringExtra()方法。

String etUser = intent.getStringExtra("etUser");
String key = intent.getStringExtra("key");

有关更多详细信息,请参阅

于 2013-05-14T05:21:18.850 回答
0

应用程序对象是某种方式,我会选择 EventBus(比如 Square 或 Greenrobot 的 OTTO)。在相当长的一段时间后,对应用程序上下文进行翻转往往会产生“上帝对象”问题。你应该避免这种情况。SharedPreferences 也是一些不错的选择。

于 2013-05-14T06:31:46.467 回答