1

あるアクティビティから別のアクティビティに 2 つのパラメーターを送信しようとしていますが、何らかの理由でパラメーターの 1 つだけが渡されます。どうなり得るか?

アクティビティの送信:

showActivity(OrderActivity.class, new Pair("CUSTOMER_ID", customerId), new Pair("CUSTOMER_TYPE", customerType));

受信アクティビティ: 顧客 ID は 0 を示していますが、タイプ データは取得されています

Bundle extras = getIntent().getExtras();

    long customerId = extras.getLong("CUSTOMER_ID");
    int customerType = extras.getInt("CUSTOMER_TYPE");
    Log.d("===customer ", " id : " + customerId + "  type : " + customerType);

showActivity見た目はこんな感じ

protected void showActivity(Class<? extends BaseKaizenActivity> clazz, Pair<String, Object> ... parameters) {
    Intent intent = new Intent(this, clazz);
    if (parameters != null) {
        for (Pair<String, Object> pair : parameters) {
            if (pair.second instanceof Integer) {
                intent.putExtra(pair.first, (Integer)pair.second);  
            }
            else if (pair.second instanceof Parcelable) {
                intent.putExtra(pair.first, (Parcelable)pair.second);
            }
        }
    }
    startActivity(intent);
}
4

2 に答える 2

1
if (pair.second instanceof Integer) {
                intent.putExtra(pair.first, (Integer)pair.second);  
            }
            else if (pair.second instanceof Parcelable) {
                intent.putExtra(pair.first, (Parcelable)pair.second);
            }

あなたはLongの句を書くのを忘れているようです.それはifもelse ifも行きません.soはextradataに入れられていません.

于 2012-09-12T07:08:06.407 に答える
0

なぜそれを使っているのですか?put と get メソッドを使用するだけで、非常にシンプルです。

intent.putExtra("backPressed", true);
getIntent().getBooleanExtra("backPressed", false);

これは私の作業コードであり、問​​題はありません。

于 2012-09-12T07:10:59.427 に答える