如何在android中的两个活动之间传递数据?

时间:2011-11-09 04:44:43

标签: android

如何在android中的两个活动之间传递数据?

以下是我的代码: -

Intent intent = new Intent(getBaseContext(), SignoutActivity.class);
intent.putExtra("EXTRA_SESSION_ID", sessionId);
startActivity(intent)

其次我使用了SharedPreferences: -

传递数据: -

 SharedPreferences gameSettings = getSharedPreferences("MyGamePreferences",MODE_PRIVATE);  
 SharedPreferences.Editor prefEditor = gameSettings.edit();  
 prefEditor.putString("UserName", "Guest123");  
 prefEditor.putBoolean("PaidUser", false);  
 prefEditor.commit();

在下一个活动中获取数据: -

SharedPreferences gameSettings = PreferenceManager
                                .getDefaultSharedPreferences(getBaseContext());
String s= gameSettings.getString("UserName", "Dipak");
Boolean b= gameSettings.getBoolean("PaidUser", true);

但是数据没有进入下一个活动。

6 个答案:

答案 0 :(得分:3)

你可以试试这个:

string dataToPass= "Hello I am activity one";
Intent intent = new Intent(this, NextActivity.class);
intent.putExtras("KeyToAccessData", dataToPass);
startActivity(intent);

在NextActivity中,获取如下数据:

String datatoCollect;
Intent intent = getIntent();
dataToCollect = intent.getStringExtra("KeyToAccessData");

如果要传递的数据是对象,那么您可以查看Parcelable

答案 1 :(得分:2)

在活动之间传递数据是由intent对象。您可以使用Bundle类的对象将数据附加到intent对象。   从这里http://codeglympse.blogspot.in/2012/10/passing-data-to-activity.html

了解更多相关信息

答案 2 :(得分:1)

对于第一种方法,使用以下行获取值

int sessionId=getIntent().getIntExtra("EXTRA_SESSION_ID");

使用SP获取数据也可以使用此行

SharedPreferences gameSettings = getSharedPreferences("MyGamePreferences",MODE_PRIVATE);

答案 3 :(得分:1)

不起作用的原因是因为您使用了两个不同的偏好文件。在两个地方使用默认的共享首选项,它应该工作。但是,如果您只想传递数据,那不是这样做的,那么您应该在意图中使用更多的额外内容。

答案 4 :(得分:0)

为什么不使用mIntent.putExtra()将数据传递给另一个活动?

看到您的编码,您可以使用以下内容获取您的sessionId :(假设您的sessionId为整数)

int sessionId=getIntent().getIntExtra("EXTRA_SESSION_ID");

你从SharedPreferences获取价值的方式绝对正确。我不知道你为什么不参加下一次活动。

答案 5 :(得分:0)

这就是我做的,它对我有用。

  Intent in = new Intent(this, SecondWindow.class);
        Bundle bundle = new Bundle();
        bundle.putString("userName", "Name");
        bundle.putString("pwd", "password");
            in.putExtras(bundle);
        startActivity(in);

在SecondWindow.java中,onCreate方法

 Bundle params = getIntent().getExtras();

        String username= params.getString("userName");
        String pwd= params.getString("pwd");