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);
}

このコードのトーストは、「渡された 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();

このトーストには、「受信した ID: null」と表示されます。これは正しくありません。getInt("accountId") をテストすると、0 が返されます。コードの何が問題なのですか? それは非常に単純なようで、間違いの余地はありませんが、それでも...

4

4 に答える 4

4

実際、それはばかげた質問でした。intを受け取ろうとしている間、私はエクストラに長い間渡っていました。getLong()はうまく機能しました。

于 2012-07-10T11:27:31.357 に答える
1

SharedPreferencesを使用して、現在のアクティビティから次のアクティビティにデータを渡すことができます。アクティビティ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); 
 }

その後、アクティビティAからIDを受け取るには、このコードをアクティビティBに配置する必要があります。

SharedPreferences preferences;
int id;

preferences = getSharedPreferences("Preferences", 0);

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

お役に立てば幸いです。

于 2012-07-09T04:59:15.743 に答える
1

私はあなたが使いたいと思う:

public int getIntExtra (String name, int defaultValue)

または、バンドルを使用している場合

public int getInt (String name)
于 2012-07-08T22:14:29.963 に答える
0

整数値をアクティビティに渡す場合、他のインテントでその値を取得する必要があります。

 empid = Extras.getInt(String str);

あなたの場合、次のように使用する必要があります

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 に答える