Проблемы с отправкой данных из одного действия в другое с помощью приложения - PullRequest
0 голосов
/ 22 октября 2011

Как видно из заголовка, я хочу перенести данные, в этом случае информацию, введенную пользователем на EditText и Spinner, из одного занятия в другое.

Я следую учебному пособиюиз книги, но она не работает (я думаю, что она не завершена).Вот код программы:

    public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    this.setContentView(R.layout.main);
    this.location=(EditText)findViewById(R.id.location);
    this.cuisine=(Spinner)findViewById(R.id.cuisine);
    this.grabReviews=(Button)findViewById(R.id.get_reviews_button);

    ArrayAdapter adapter = ArrayAdapter.createFromResource(this, R.array.cuisine, android.R.layout.simple_spinner_item);
    adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

    this.cuisine.setAdapter(adapter);
    this.grabReviews.setOnClickListener(new OnClickListener()
        {
            public void onClick(View v)
            {
                handleGetReviews();
            }
        }
    );
}

private void handleGetReviews() {

    RestaurantsActivity application= (RestaurantsActivity) getApplication();
    application.setReviewCriteriaCuisine(this.cuisine.getSelectedItem().toString());
    application.setReviewCriteriaLocation(this.location.getText().toString());
    Intent intent=new Intent(Constants.INTENT_ACTION_VIEW_LIST);
    startActivity(intent);

}

Этот код выше не работает.Я не понимаю четырех вещей:

- RestaurantsActivity должно быть действительным действием, верно?

-Во всех примерах, которые я видел по Интернету, есть приложение, расширяющее класс, в этом примеренет.

- setReviewCriteria функция отсутствует

- Откуда взялась Constants.INTENT_ACTION_VIEW_LIST?

Ответы [ 2 ]

3 голосов
/ 22 октября 2011

Итак, ваша цель - получить данные для Restaurantsactivity? Обычно данные в Android передаются от одного актива к другому с помощью Intents.

Итак, сначала вы создаете намерение. Затем вы помещаете данные, которые хотите передать, в намерение с помощью метода intent.putExtra (). В действии, которое получает намерение, вы можете получить данные с помощью метода getIntent (). GetExtra () (getExtra может быть чем-то вроде getStringExtra ()).

Вот небольшой пример для поля ввода с именем "name":

public void onCreate(Bundle iBundle){
  //do some stuff here
  //perhaps define some Buttos and so on

  //now lets start the activity
  Intent intent = new Intent(currentActivityname.this, ActivityYouWantToStart.class);
  intent.putExtra("name", name.getText().toString())
  startActivity(intent); // you can also start an startActivityForResult() here :)
}

В нашей операции получения вы теперь можете обрабатывать намерение (например, в методе onCreate ()

public void onCreate(Bundle iBundle){
String name = this.getIntent().getStringExtra("name",some default value);
}
2 голосов
/ 22 октября 2011

Попытайтесь поместить данные в Пакет и запустите Активность с этим Пакетом

Intent intent = new Intent(this, YourSecondActivity.class);
intent.putExtra(... HERE YOUR BUNDLE WITH DATA ...);
startActivity(intent);

Надеюсь, это поможет вам!

...