Android: передача данных в новое действие

#android

#Android

Вопрос:

Я новичок в программировании на Android, и я почти уверен, что это то, что мне нужно. У меня есть страница, которая загружается при запуске, на которой есть счетчик, несколько текстовых полей редактирования и две кнопки. Одна кнопка удаляет поля и сбрасывает счетчик. Другая кнопка должна загрузить новое действие (я думаю), и мне нужно, чтобы то, что было в EditTexts и spinner, было загружено этим.

Прямо сейчас у меня есть тост, чтобы я мог проверить, что все было схвачено правильно. Вот мое действие, которое у меня есть сейчас:

 import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ArrayAdapter;
import android.widget.EditText;
import android.widget.Spinner;
import android.widget.Toast;

public class directoryApp extends Activity {

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.searchscreen);

        //Declaring these so I can use them when the button is clicked.
        final Spinner depts = (Spinner) findViewById(R.id.dept);
        final ArrayAdapter<CharSequence> deptsAdapter = new ArrayAdapter<CharSequence>(this, android.R.layout.simple_spinner_item);
        deptsAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        final EditText fname = (EditText) findViewById(R.id.fname);
        final EditText lname = (EditText) findViewById(R.id.lname);
        final EditText aim = (EditText) findViewById(R.id.aim);
        final EditText phone = (EditText) findViewById(R.id.phone);
        depts.setAdapter(deptsAdapter);
        for(int i = 0 ; i < fillSpinner().length ; i  ){
            deptsAdapter.add(fillSpinner()[i]);
        }


        //Search Button on click, makes a "toast" message with grabbed web string and whatever was entered into the fields.
        findViewById(R.id.search).setOnClickListener(new OnClickListener() {
            public void onClick(View v) {
                //Here is where the search button does it's thing.
                Toast.makeText(BNYDirectory.this, fname.getText()   " "   lname.getText()   " "   aim.getText()   " "   phone.getText()   " "   depts.getSelectedItem()   " "   deptIDs()[(int)depts.getSelectedItemId()], Toast.LENGTH_SHORT).show();
            }
        });
    }
}
  

Мне нужно передать fname.getText(), lname.getText(), aim.getText(), phone.getText() и deptIDs()[(int)depts.getSelectedItemId()] (все это я получаю в виде строк).

Каков наилучший способ перехода на следующую страницу (которую я буду использовать для получения результатов и отображения)? Также возможно, что при нажатии на поиск я могу заставить его извлекать результаты из Интернета и помещать их в массив строк и передавать только это, но я бы предпочел этого не делать.

Какой-нибудь пример, который я мог бы использовать?

Ответ №1:

Вы создаете намерение, указывающее имя класса для второго действия. Затем вы добавляете дополнительные данные к намерению, причем каждая часть данных связана с уникальной строкой, которая служит ключом для поиска данных. Затем новое действие может извлекать данные, используя те же ключи. Смотрите пример кода в разделе «Открытие нового экрана» в разделе «Общие задачи» документации по ресурсам.

Комментарии:

1. Спасибо, я не знал о разделе общих задач!