2

我正在尝试做一件简单的事情:将变量从活动 A 传递到活动 B。我在活动 A 中有这个方法:

private void editAccount(CloudAccount account) {
    Intent intent = new Intent(this, EditAccountActivity.class);
    intent.putExtra("accountId", account.getId());
    this.showToast("ID passed: " + account.getId());
    startActivity(intent);
}

此代码中的 Toast 显示“ID 已通过:1”。这是对的。现在,我开始活动 B:

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    Bundle extras = getIntent().getExtras();
    Toast.makeText(this, "ID received: " + extras.getString("accountId"), Toast.LENGTH_LONG).show();

此 toast 显示“收到的 ID:null”。这是不正确的。如果我测试 getInt("accountId") - 它返回 0。我的代码有什么问题?看起来很简单,没有出错的地方,但还是……

4

4 回答 4

4

那是个愚蠢的问题,实际上。当我试图接收 int 时,我一直在传递很长的时间。getLong() 效果很好。

于 2012-07-10T11:27:31.357 回答
1

我想你想使用:

public int getIntExtra (String name, int defaultValue)

或者在您使用捆绑包的情况下

public int getInt (String name)
于 2012-07-08T22:14:29.963 回答
1

您可以使用 SharedPreferences 将数据从当前活动传递到下一个活动。您需要在 Activity A 中输入如下代码。

 private void editAccount(CloudAccount account) { 
      SharedPreferences preferences = getSharedPreferences("Preferences", 0);
      SharedPreferences.Editor editor = preferences.edit(); 
      Intent intent = new Intent(this, EditAccountActivity.class);  
      editor.putInt("accountId", account.getId()); editor.commit();    
      startActivity(intent); 
 }

之后,您需要将此代码放在您的活动 B 中以从活动 A 接收您的 ID。

SharedPreferences preferences;
int id;

preferences = getSharedPreferences("Preferences", 0);

id =  preferences.getString("accountId", 0);

希望有帮助。

于 2012-07-09T04:59:15.743 回答
0

如果将Integer值传递给 Activity,则必须以其他意图获取该值

 empid = Extras.getInt(String str);

在您的情况下,您必须使用 as

protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Bundle extras = getIntent().getExtras();
System.out.println("Received value is "+extras.getInt("accountId"));
Toast.makeText(this, "ID received: " + extras.getInt("accountId"), Toast.LENGTH_LONG).show();

您现在可以检查 logcat 的接收值。祝你好运

于 2012-07-09T03:26:38.023 回答