Пройдите размер щетки и форму щетки между MainActivity
и ChangeBrush
.Android - передайте несколько параметров с помощью 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
кнопку в ChangeBrush
деятельность, они могли пройти 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
Кажется, возвращаемое значение может соответствовать правому умыслу. Я не знаю, почему он дважды записывает информацию о форме. Что-то не так с finish()
? Я хочу, чтобы пользователь выбирал как размер, так и форму, а затем возвращался к основному виду деятельности.
Если метод неправильный, что мне делать, чтобы передать эти два значения?
Какие кнопки у вас отображены на 'onClickBrush'? Все они? Вы должны разделить кнопки «Размер» и «Форма» на два отдельных намерения. –
@ cricket_007 'onClickBrush' запускает операцию' ChangeBrush'. В деятельности «ChangeBrush» я разделяю размер и форму на два намерения (методы). – Helen
Похоже, что 'onClickBrush' запускает' ChangeBrush' дважды в данный момент. –