意图将数据并发发送到多个屏幕

时间:2016-06-12 07:24:46

标签: android android-intent

如果我想将相同的数据发送到多个Activity 例如这段代码:

Intent passDataToSomeScreen = new Intent(MainActivity.this,
                                         Second_Screen.class);
String first_name = etFirstName.getText().toString();
passDataToSecondScreen.putExtra("FIRST_NAME", first_name);

String last_name = etLastName.getText().toString();
passDataToSecondScreen.putExtra("LAST_NAME", last_name);

startActivity(passDataToSomeScreen);

但是我没有进入第二个屏幕,而是想将它发送到第三个屏幕,等等...(并发...)而不是在每个屏幕上获取相同的数据

可以从一个意图中完成吗?

4 个答案:

答案 0 :(得分:1)

如果您想将发送数据存储到其他第二,第三,第四屏幕等。那么我认为最好将它们保存在SharedPreferences中。

SharedPreferences prefs=PreferenceManager.getDefaultSharedPreferences(getApplicationContext(),Context.PRIVATE);

prefs.get<TYPE>(<KEY>,<DEFAULT VALUE>)//FOR STORING DATA
prefs.edit().put<TYPE>(<KEY>,<VALUE>).apply();//FOR EDITING DATA

答案 1 :(得分:0)

是的,这很容易。将所有数据放入bundle中,然后在下一个activity中获取bundle并再次输入用于启动第三个活动的新intent。

        Bundle bundle = new Bundle();
        bundle.putString("FIRST_NAME", first_name);
        bundle.putString("LAST_NAME", last_name);
        passDataToSecondScreen.putExtra("DATA", bundle);

在下一个屏幕中:

        passDataToThirdScreen.putExtra("DATA", getIntent().getBundleExtra("DATA"));

希望它能奏效:)

答案 2 :(得分:0)

您可以使用 Java Singleton设计模式在没有共享首选项的情况下实现此目的: -

从任何类/活动/片段中设置UserName,如下所示

     //Set user name
    SessionManager.getInstance().setFirstName("UserName");

在任何类/活动/片段中获取UserName,如下所示

    //Get username
    String UserName =  SessionManager.getInstance().getFirstName();

不要忘记在完成所有使用后清除会话

    //When you are done clear session
    SessionManager.getInstance().flushSesion();

会话管理器clas看起来像这样

public class SessionManager {
    private static SessionManager ourInstance = new SessionManager();

    private String firstName;
    private String lastName;

    public static SessionManager getInstance() {
        return ourInstance;
    }

    private SessionManager() {
    }

    public String getLastName() {
        return lastName;
    }

    public void setLastName(String lastName) {
        this.lastName = lastName;
    }

    public void flushSesion() {

        firstName = null;
        lastName = null;
    }

}

答案 3 :(得分:0)

一个简短的方法就是这样。在课堂上使用static个变量。 创建班级助手

      public  class  Helper {
               public static String FIRST_NAME;
               public static String  LAST_NAME;

       }

这样设置                          Helper.FIRST_NAME =&#34;富&#34 ;; 像这样的接受

                 String someName=Helper.FIRST_NAME;