Как получить значение из EditText в деятельности, чтобы использовать его в другой деятельности? - PullRequest
1 голос
/ 27 октября 2011

Как получить значение из EditText (editProtein), как это

protected void protein() {
    EditText editCalorie = (EditText)findViewById(R.id.editCalorie);
    double pro = Double.parseDouble(editCalorie.getText().toString());
    EditText editProtein = (EditText)findViewById(R.id.editProtein);
    editProtein.setText(Double.toString(pro * 0.25 * 4));
}

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

Ответы [ 3 ]

4 голосов
/ 27 октября 2011

Существует несколько различных способов обмена данными между различными классами Activity.То, как вы это сделаете, зависит от вашего конкретного приложения и того, как долго должны храниться эти данные.

Первый способ - передать его новому Activity, который вы запускаете с первого Activity с помощью метода putExtras(), для отправки произвольной информации в другое действие.Чтобы запустить второй Activity, вы используете Intent;то, что вы делаете, упаковываете некоторые дополнительные произвольные данные (в данном случае, возможно, ваши белковые данные):

Bundle bundle = new Bundle();
bundle.putString(“some_protein_stuff″, textStringFromYourEditText);

Intent newIntent = new Intent(this.getApplicationContext(), ActivityClass2.class);
newIntent.putExtras(bundle);
startActivityForResult(newIntent, 0);

В ActivityClass2 мы можем прочитать этот параметр, используя синтаксис:

Bundle bundle = this.getIntent().getExtras();
String param1 = bundle.getString(“some_protein_stuff″);

Однако, в качестве альтернативы, вместо передачи данных в новый Activity при его вызове, вы также можете рассмотреть возможность использования Общие настройки .Это механизм, с помощью которого вы можете очень легко хранить данные в вашем приложении с помощью пар ключ-значение.Если есть вероятность, что вы захотите использовать значение, введенное пользователем через EditText в различных других классах Activity, а также захотите использовать это же значение, когда приложение закрывается и снова открывается позже, тогда онобудет по-прежнему доступен для вас, просто вытащив его из общих настроек.Предпочтения очень просты в использовании и есть различные учебники по SO или где-либо еще.

В качестве другой альтернативы, вы можете рассмотреть возможность совместного использования таких данных «глобально», создав класс, расширяющий android.app.Application, или создать класс Singleton, который достигает аналогичного результата.

Первое наиболее очевидное решение объединения данных с Intent при запуске нового Activity - это , вероятно, то, что вам нужно, но последние два предложения также могут бытьинтерес в зависимости от того, как ваше приложение работает и как вы хотите, чтобы эти данные были сохранены.

1 голос
/ 27 октября 2011

Вы можете передавать значения в другой вид деятельности.Что-то вроде:

intent.putExtra("CALORIE", calorie);
intent.putExtra("PROTEIN", protein);

В соответствии с этим, в упражнении, где вы хотите использовать эти значения, используйте что-то вроде:

Bundle extras = getIntent().getExtras();
if(extras !=null) {
    double calorie = extras.getDouble("CALORIE");
    double protein= extras.getDouble("PROTEIN");
}
0 голосов
/ 27 октября 2011

EditText расширяет TextView, который имеет метод getText.

http://developer.android.com/reference/android/widget/TextView.html#getText%28%29

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...