Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何将值从一个类发送到不同的类(多个类)_Java_Android_Bundle - Fatal编程技术网

Java 如何将值从一个类发送到不同的类(多个类)

Java 如何将值从一个类发送到不同的类(多个类),java,android,bundle,Java,Android,Bundle,我有valuestrUser和KEY,我想将此值发送到多个不同的类,因为此值将在5个类中用于url,我知道仅使用Intent将值发送到一个类的方法。putExtra如下所示: Intent policy= new Intent(LoginActivity.this,EpolicyListPolis.class); policy.putExtra("etUser",strUser); policy.putExtra("key",KEY); start

我有value
strUser
KEY
,我想将此值发送到多个不同的类,因为此值将在5个类中用于url,我知道仅使用
Intent将值发送到一个类的方法。putExtra
如下所示:

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

如何一次将此值发送到多个不同的类?我可以使用SharedReferences吗。。?我如何在类和目标类中编写SharedReferences?

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


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

您只需在其他活动中获取这些内容即可--

或者

您可以在类中设置这些值,并根据需要从中获取这些值。

您可以使用

用于将值存储到
SharedReferences

SharedPreferences settings = getSharedPreferences("PREFS_NAME", 0);
SharedPreferences.Editor editor = settings.edit();
editor.putString("etUser", strUser);
editor.putString("key",KEY);
editor.commit();
只需在调用
startActivity(policy)之前粘贴这些行

并从
SharedReferences

SharedPreferences settings = getSharedPreferences("PREFS_NAME", 0);
String etUser1 = settings.getString("etUser", null);
String key1 = settings.getString("key", null);
然后将这些行粘贴到所需的
etUser1
key1
位置。您可以在任何
活动
中访问此
SharedReferences
值。如果你不能,请看一看。这可能对你有帮助


我希望这会对您有所帮助。

我不太确定您想要做什么,但是我想,如果我要在一个类和另一个类之间使用变量,我会将变量设置为静态,并从类中“获取”该变量的值

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

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;

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

首先,使用
getIntent()
方法获取开始活动的意图:

Intent intent = getIntent();
如果额外数据表示为字符串,则可以使用
intent.getStringExtra()
方法

String etUser = intent.getStringExtra("etUser");
String key = intent.getStringExtra("key");
有关更多详细信息,请参阅。

试试这个

使用意图从此类发送值

Intent policy= new Intent(LoginActivity.this,EpolicyListPolis.class);
    policy.putExtra("key",strUser);
    startActivity(policy);
这类似于:-“键”和-strUser。 使用KEY从另一个类获得这个值

像这样获得价值

String user = getIntent().getExtras().getString("key",null);
user中,您将获得strUser值。如果strUser未传递任何默认值null(“键”右侧)以外的值作为用户的签名

你所需要的所有课程中使用的相同内容。。。但请记住,所有的工作与关键


因为(一种类型的ID)仅适用于放置获取特定值…

我想告诉您使用应用程序类。最好从下面的链接获取参考

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


这将对您有所帮助。

应用程序对象是某种方式,我会选择EventBus(如Square的OTTO或Greenrobot)。
在应用程序上下文上进行转换往往会在一段时间后产生“上帝对象”问题。你应该避免这样。共享引用也是一个不错的选择。

您可以使用Bundle将数据从一个活动类传递到另一个活动类,如下所示

  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......

所有这5个类都在扩展活动类吗?再次使用意图将该类的值发送给另一个类,或者使用应用程序类。所有值都是静态的吗?它们都是按类更改的还是固定的?您能解释更多吗。。?如果我想发送值strUser和KEY呢?我已经试过了。但我似乎无法在我的任何活动之间共享数据…@AoyamaNanami有关完整代码示例,请参阅我的博客文章Aoyaman。您可以在共享首选项中存储和检索任何值。我只想将值strUser和KEY发送到不同的类多个类您的意图一次只重定向到一个类,然后依次将其用于所有需要的类。。。值通过putExtra()传递和通过getExtra()获取。有关getExtra()检查的更多详细信息..以及关于putExtra()检查…如何在其他类中调用它?只需在其他活动的onCreate()方法中调用它即可。如果类没有扩展到活动,那么在类中设置值,并从中获取所需的类。我仍然不理解。。。你能解释一下细节吗?制作一个类…设置vales etUser并输入它,制作方法来获取这些vales…并进入你需要的类。你能告诉我细节吗?
     Bundle  getBundle = this.getIntent().getExtras();

     name = getBundle.getString("Url") 
      etc......