Android как получить больше данных с помощью onActivityResult

Я начинаю свою диалогическую деятельность с startActivityForResult(myIntent, 1); забрать некоторые данные. protected void onActivityResult(int requestCode, int resultCode, Intent data) может забрать только один тип данных?

Мне нужно взять строку (из EditText) и цвет ресурса (фон RadioButton) Могу ли я положить все два в returnIntent.putExtra("result",result);?? Или я могу отправить только одну вещь?

Это код деятельности диалога

public class ActivityAddMateria extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_add_materia);

    final Button exit_button = (Button) findViewById(R.id.exit_dialog_materia);
    exit_button.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {

            //No input
            Intent returnIntent = new Intent();
            setResult(RESULT_CANCELED, returnIntent);
            //Exit from Dialog
            finish();
        }
    });

    final Button accept_button = (Button) findViewById(R.id.add_materia);
    accept_button.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {

            //Find EditText for take data
            EditText nome_materia = (EditText)findViewById(R.id.nome_materia);
            //Put result into variable result that is send back
            String result = nome_materia.getText().toString();; 

            Intent returnIntent = new Intent();
            returnIntent.putExtra("result",result);
            setResult(RESULT_OK,returnIntent);
            // Exit to Dialog
            finish();
        }
    });

 }
}

И это код Деятельности, который принимает входные данные:

protected void onActivityResult(int requestCode, int resultCode, Intent data) {

    if (requestCode == 1) {
        if(resultCode == RESULT_OK){

            String result = data.getStringExtra("result");

            Materia materia;
            materia = new Materia();
            materia.setMateria(result);
            materia.setColor(getResources().getColor(R.color.verde));
            DB.getMaterie().add(materia);

            LinearLayout mLayout = (LinearLayout) findViewById(R.id.contenitorematerie);
            LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
                    new LayoutParams(LayoutParams.WRAP_CONTENT,
                                    LayoutParams.WRAP_CONTENT));
            params.setMargins(30, 0, 0, 0);
            params.width = getResources().getDimensionPixelSize(R.dimen.text_view_width);

            for(int i=0; i< DB.getMaterie().size(); i++)
            {
                textView = new TextView(this);
                textView.setText(DB.getMaterie().get(i).getMateria());
                textView.setBackgroundColor(DB.getMaterie().get(i).getColor());
                textView.setGravity(Gravity.CENTER); //centro la scritta nella textview
                textView.setLayoutParams(params);   //assegno i parametri impostati sopra
                mLayout.addView(textView);
            }

        } 

        if (resultCode == RESULT_CANCELED) {
            //Nessuna materia inserita
        }
    }
}//onActivityResult

Мне нужно установить цвет динамически из результатов здесь materia.setMateria(result); materia.setColor(getResources().getColor(R.color.verde));

1 ответ

Решение

Могу ли я положить все два в returnIntent.putExtra("результат", результат);?

Вы можете добавить два дополнения, используя разные ключи (например, "result" а также "this is another extra").

Другие вопросы по тегам