Страница 1 из 1

Проблема с передачей данных из активности в активность

Добавлено: 14 фев 2015, 16:52
Iren
Добрый день всем. Проблема с передачей переменных из одной активности в другую. Переменные формируются после нажатия на дату в календаре. Вот код первой активности:

Код: Выделить всё

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.choose_date);

        Intent i = getIntent();
        rest_id = i.getStringExtra(TAG_RESTID);

        CalendarView calendar = (CalendarView) findViewById(R.id.calendarView1);
        calendar.setOnDateChangeListener(new CalendarView.OnDateChangeListener() {

            @Override
            public void onSelectedDayChange(CalendarView view, int year,
                                            int month, int dayOfMonth) {
                int mYear = year;
                int mMonth = month + 1;
                int mDay = dayOfMonth;

                order_day = String.valueOf(mDay);
                order_month = String.valueOf(mMonth);
                order_year = String.valueOf(mYear);

                // Запускаем новый intent который покажет нам Activity
                Intent in = new Intent(getApplicationContext(), NewOrder.class);
                // отправляем pid в следующий activity
                in.putExtra(TAG_RESTID , rest_id);
                in.putExtra(TAG_DAY , order_day);
                in.putExtra(TAG_MONTH , order_month);
                in.putExtra(TAG_YEAR , order_year);

                // запуская новый Activity ожидаем ответ обратно
                startActivityForResult(in, 100);
            }
        });

    }
}
Вот код активности приема и дальнейшей передачи в php-скрипт:

Код: Выделить всё

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.new_order);

        Intent i = getIntent();
        rest_id = i.getStringExtra(TAG_RESTID);
        day = i.getStringExtra(TAG_DAY);
        month = i.getStringExtra(TAG_MONTH);
        year = i.getStringExtra(TAG_YEAR);

        Button btnCreateProduct = (Button) findViewById(R.id.btnCreateProduct);

        btnCreateProduct.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View view) {
                new CreateNewProduct().execute();
            }
        });
    }

 
    class CreateNewProduct extends AsyncTask<String, String, String> {
        @Override
        protected void onPreExecute() {
            super.onPreExecute();
            pDialog = new ProgressDialog(NewOrder.this);
            pDialog.setMessage("Создание продукта...");
            pDialog.setIndeterminate(false);
            pDialog.setCancelable(true);
            pDialog.show();
        }

        protected String doInBackground(String[] args) {

            // Заполняем параметры
            List<NameValuePair> params = new ArrayList<NameValuePair>();
            params.add(new BasicNameValuePair("rest_id", rest_id));
            params.add(new BasicNameValuePair("day", day));
            params.add(new BasicNameValuePair("month", month));
            params.add(new BasicNameValuePair("year", year));

            // получаем JSON объект
            JSONObject json = jsonParser.makeHttpRequest(url_create_product, "POST", params);

            Log.d("Create Response", json.toString());

            try {
                int success = json.getInt(TAG_SUCCESS);

                if (success == 1) {
                    // продукт удачно создан
                    Intent i = new Intent(getApplicationContext(), MainScreen.class);
                    startActivity(i);

                    // закрываем это окно
                    finish();
                }
            } catch (JSONException e) {
                e.printStackTrace();
            }

            return null;
        }

        protected void onPostExecute(String file_url) {
            pDialog.dismiss();
        }
    }

}

rest_id передается через 2 активности нормально, а вот переменные, полученные с календаря - теряются. day = 0, month и year вообще пустые. в чем может быть проблема?

Re: Проблема с передачей данных из активности в активность

Добавлено: 14 фев 2015, 21:46
ANdriy123456
передаю:
Intent intent = new Intent(Albums.this, PhotoByAlbum.class);
intent.putExtra("id", list.get(position).getId());
intent.putExtra("title", list.get(position).getName());
startActivity(intent);

получаю:
Bundle extras = getIntent().getExtras();
if (extras != null) {
int id = extras.getInt("id");
title.setText(extras.getString("title"));
}

Re: Проблема с передачей данных из активности в активность

Добавлено: 15 фев 2015, 06:51
Iren
ANdriy123456 писал(а):передаю:
Intent intent = new Intent(Albums.this, PhotoByAlbum.class);
intent.putExtra("id", list.get(position).getId());
intent.putExtra("title", list.get(position).getName());
startActivity(intent);

получаю:
Bundle extras = getIntent().getExtras();
if (extras != null) {
int id = extras.getInt("id");
title.setText(extras.getString("title"));
}

да я так же и делаю, код ведь привела. одна переменная передается, а 3 нет. может как-то можно массив данных передать?

Re: Проблема с передачей данных из активности в активность

Добавлено: 15 фев 2015, 12:54
altwin
Iren писал(а):
ANdriy123456 писал(а):передаю:
Intent intent = new Intent(Albums.this, PhotoByAlbum.class);
intent.putExtra("id", list.get(position).getId());
intent.putExtra("title", list.get(position).getName());
startActivity(intent);

получаю:
Bundle extras = getIntent().getExtras();
if (extras != null) {
int id = extras.getInt("id");
title.setText(extras.getString("title"));
}

да я так же и делаю, код ведь привела. одна переменная передается, а 3 нет. может как-то можно массив данных передать?
к примеру для ArrayList есть метод getStringArrayListExtra и т.д. И любой объект можно передавать с помощью Serializable.