在Android中传递活动之间的数据

35

在Android应用中,如何在活动之间传递数据?

3个回答

56
在您当前的活动中,创建一个意图。
Intent i = new Intent(getApplicationContext(), ActivityB.class);
i.putExtra(key, value);
startActivity(i);

然后在另一个活动中检索这些值。

Bundle extras = getIntent().getExtras(); 
if(extras !=null) {
    String value = extras.getString(key);
}

1
这是每个人都这样做的吗? - dotty
我目前的声望不足以将其投票否决,但值得注意的是,虽然这种方法在某些情况下可以工作,但并不是唯一的方法,也不总是最好、最简单、最快或最有效的方法。Emre的答案(尽管得票数差异巨大)链接了各种方法,您可以从中选择最适合您的应用程序的最佳解决方案。 - M_M
这并不总是有效,因为当你有大量数据时,你无法将它们作为额外的附加到意图中。https://groups.google.com/forum/?fromgroups#!topic/android-developers/sosGdqTGF8I - Aurelian Cotuna

1
使用全局类:
public class GlobalClass extends Application
{
    private float vitamin_a;


    public float getVitaminA() {
        return vitamin_a;
    }

    public void setVitaminA(float vitamin_a) {
        this.vitamin_a = vitamin_a;
    }
}

您可以从所有其他类中调用此类的设置器和获取器。要做到这一点,您需要在每个Activity中创建一个GlobalClass对象:

GlobalClass gc = (GlobalClass) getApplication();

然后你可以调用例如:
gc.getVitaminA()

0
将此代码放入您的次要活动中。
SharedPreferences preferences =getApplicationContext().getSharedPreferences("name", MainActivity.MODE_PRIVATE);

android.content.SharedPreferences.Editor editor = preferences.edit();

editor.putString("name", "Wally");
            editor.commit();

将此代码放入您的MainActivity中。
SharedPreferences preferences = getApplicationContext().getSharedPreferences("name", MainActivity.MODE_PRIVATE);

if(preferences.contains("name")){

Toast.makeText(getApplicationContext(), preferences.getString("name", "null"), Toast.LENGTH_LONG).show();

}  

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接