在创建之前将Bundle发送到Main / Launcher Activity?

时间:2014-01-16 16:48:22

标签: java android android-intent android-activity

可以使用意图轻松地将捆绑包传递给新活动:

Intent intent = new Intent(this, DisplayMessageActivity.class);
Bundle b = new Bundle();
// add extras...
intent.putExtras(b);
startActivity(intent);

是否可以使用Bundles(或类似)将数据发送到主要活动?

Application类创建before任何活动,我想用它将数据发送到主活动。 我不希望全局访问数据,或者在主活动上使用静态方法将数据传递给它。

2 个答案:

答案 0 :(得分:1)

由于您已经掌握了应用程序,我只想用它来创建一个应用程序变量 -

public class MyApplication extends Application {

    private String someVariable;

    public String getSomeVariable() {
        return someVariable;
    }

    public void setSomeVariable(String someVariable) {
        this.someVariable = someVariable;
    }
}

你必须在清单中声明这样的类:

<application android:name="MyApplication" android:icon="@drawable/icon" android:label="@string/app_name">

然后在接收器Activity:

// set
((MyApplication) this.getApplication()).setSomeVariable("foo");

// get
String s = ((MyApplication) this.getApplication()).getSomeVariable();

正如杰夫吉尔菲尔特所解释的那样: Android global variable

答案 1 :(得分:1)

您是否考虑过暂时使用SharedPreferences,然后删除新活动的onCreate中的SharedPreferences数据。

一些示例代码:

活性1:

SharedPreferences prefs = getSharedPreferences("mydata", 0);
        SharedPreferences.Editor editor = prefs.edit();
        editor.putString("secretstring", "asdasdasdqwerty");
        editor.commit();

活性2:

SharedPreferences prefs = getSharedPreferences("mydata", 0);
String savedString = prefs.getString("secretstring", "");

SharedPreferences prefs = getSharedPreferences("mydata", 0);
            SharedPreferences.Editor editor = prefs.edit();
            editor.putString("secretstring", "nope");
            editor.commit();

第二种可能性是对公共变量使用getter和setter,但只通过检查要求它的类来将正确的变量返回给主类。

希望这有帮助:)。