MainActivity
とChangeBrush
の間でブラシのサイズとブラシの形状を渡します。Android - 2つのアクティビティ間でputExtrasを使用して複数のパラメータを渡す
メイン:
static final int ACTIVITY_BRUSH_SIZE_REQUEST_CODE = 2;
static final int ACTIVITY_BRUSH_SHAPE_REQUEST_CODE = 3;
public void onClickBrush(View view) {
Intent intent = new Intent(MainActivity.this, ChangeBrush.class);
startActivityForResult(intent, ACTIVITY_BRUSH_SIZE_REQUEST_CODE);
startActivityForResult(intent, ACTIVITY_BRUSH_SHAPE_REQUEST_CODE);
}
ChangeBrush:
public void onClickChangeBrushSize(View view) {
String size = view.getTag().toString().;
// return the brush size to main activity
Bundle bundle = new Bundle();
bundle.putString("size", size);
Intent intent = new Intent();
intent.putExtras(bundle);
setResult(Activity.RESULT_OK, intent);
finish();
}
public void onClickChangeBrushShape(View view) {
String shape = view.getTag().toString();
// return the brush shape to main activity
Bundle bundle = new Bundle();
bundle.putString("shape", shape);
Intent intent = new Intent();
intent.putExtras(bundle);
setResult(Activity.RESULT_OK, intent);
finish();
}
SelectBrush
アクティビティのレイアウト:
にsize
ボタンとshape
ボタンをクリックしたユーザをのアクティビティは、size
とshape
〜MainActivity
に渡すことができます。 MainActivity
では、私はonActivityResult
を使ってブラシのサイズと形状を設定します。
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (resultCode == RESULT_OK) {
Bundle bundle = data.getExtras();
String color = bundle.getString("color");
String size = bundle.getString("size");
String shape = bundle.getString("shape");
switch(requestCode) {
case ACTIVITY_COLOR_REQUEST_CODE:
fingerPainterView.setColour(Color.parseColor(color)); // set new color value
case ACTIVITY_BRUSH_SIZE_REQUEST_CODE:
Log.d("FingerPainter", "Main activity change brush size to " + size);
case ACTIVITY_BRUSH_SHAPE_REQUEST_CODE:
Log.d("FingerPainter", "Main activity change brush shape to " + shape);
}
} else if(resultCode == RESULT_CANCELED) {
Log.d("FingerPainter", "MainActivity canceled");
}
}
これは、戻り値をログに記録します。
D/FingerPainter: Main activity change brush shape to null
D/FingerPainter: Main activity change brush size to null
D/FingerPainter: Main activity change brush shape to SQUARE
戻り値は右の意図に対応することができるようです。なぜシェイプ情報を2回記録するのか分かりません。 finish()
に何か問題がありますか?私は、ユーザーがサイズと形状の両方を選択し、メインアクティビティに戻るようにします。
方法が間違っている場合、これらの2つの値を渡すにはどうすればよいですか?私が見
あなたはどのボタンを 'onClickBrush'にマップしましたか?それらのすべて? [サイズ]ボタンと[形状]ボタンを2つの別個のインテントに分割する必要があります。 –
@ cricket_007 'onClickBrush'は' ChangeBrush'アクティビティを開始します。 'ChangeBrush'アクティビティでは、サイズと形状を2つのインテント(メソッド)に分割します。 – Helen
'onClickBrush'は' ChangeBrush'を現時点で2回起動するようです。 –