2017-01-07 7 views
1

私のアプリはユーザーの入力文字列と色を尋ね、それを新しいアクティビティに表示します。 あるアクティビティから別のアクティビティに文字列と整数を転送すると、intのputExtraが文字列のputExtra以下だった場合、文字列は表示されませんでしたが、intが先頭にあれば文字列が表示される特定の色で。ここAndroidのputExtraメソッドの順序に関する奇妙な振る舞い

は壊れコードです:

public void sendMessage(View view){ 
    Intent intent = new Intent(this, DisplayMessageActivity.class); 
    EditText editText = (EditText) findViewById(R.id.edit_message); 
    String message = editText.getText().toString();   
    intent.putExtra(EXTRA_MESSAGE,message); 
    intent.putExtra(EXTRA_MESSAGE,colorChoice); 
    startActivity(intent); 
} 

、ここでは、作業コード

public void sendMessage(View view){ 
    Intent intent = new Intent(this, DisplayMessageActivity.class); 
    EditText editText = (EditText) findViewById(R.id.edit_message); 
    String message = editText.getText().toString(); 
    intent.putExtra(EXTRA_MESSAGE,colorChoice); 
    intent.putExtra(EXTRA_MESSAGE,message); 
    startActivity(intent); 
} 

である私はother_activity.javaでgetExtrasを切り替えてみましたが、それは何の違いが行われていません。これは悪いコーディングによって引き起こされますか?またはその言語のちょっとしたこと、

答えて

1

両方の項目に同じキーを使用しています。適切な値を得るには、colorChoicemessageに異なるキーを使用してください。その後

public static final String EXTRA_MESSAGE = "extra_message"; 
public static final String EXTRA_COLOR_CHOICE = "extra_color_choice"; 

、値を置くためにそれらを使用します:

は、あなたの活動のいずれかの静的定数を有する

Intent intent = new Intent(this, DisplayMessageActivity.class); 
EditText editText = (EditText) findViewById(R.id.edit_message); 
String message = editText.getText().toString();   
intent.putExtra(EXTRA_MESSAGE, message); 
intent.putExtra(EXTRA_COLOR_CHOICE, colorChoice); 
startActivity(intent); 

取得するには、同じEXTRA_MESSAGEEXTRA_COLOR_CHOICEキーを使用して値を読み取ることができます。

1

異なる名前のputExtraを呼び出す必要があります。

テントputExtra(文字列名、バンドル値)

  • 第一パラメータは一意でなければなりません。

ので、別のKEYEXTRA_COLOR_CHOICEためcolorChoice

intent.putExtra(EXTRA_MESSAGE,message); 
intent.putExtra(EXTRA_COLOR_CHOICE,colorChoice); 
を作成します。