Каков наилучший способ получить строковое значение в активности A и сохранить его активность B?
Я думаю, что могут быть отношения между намерениями и SharedPreferences!Лучший способ сохранить строку из другой активности
Кто-нибудь?
Каков наилучший способ получить строковое значение в активности A и сохранить его активность B?
Я думаю, что могут быть отношения между намерениями и SharedPreferences!Лучший способ сохранить строку из другой активности
Кто-нибудь?
Каков наилучший способ получить строковое значение в активности A и сохранить его активность B?
Это зависит от того, что вы подразумеваете под «сохранить его активность B»
Если вы просто хотите, чтобы «передать» его B
и использовать его там, то просто отправить в Intent
Intent i = new Intent(..., ...);
i.putExtra("someKey", someString);
startActivity(i);
и получить его в B
(не раньше onCreate()
) с чем-то вроде
Intent intent = getIntent();
String foo = intent.getStringExtra("someKey");
Если вы хотите, чтобы он действительно сохранялся, тогда SharedPreferences
было бы хорошо. В документах есть хороший пример.
Там в различных способов решить эту проблему, но тот, который вы выбираете действительно зависит от ваших потребностей, этот пост объясняет различные способы, которые вы можете предпринять, чтобы получить это.
http://www.doepiccoding.com/blog/?p=153
В принципе, есть:
-shared Предпочтения
-Intent Дополнительно
-Применение Подкласс
-SQLite Database
Все они ехр подробно подробно ...
С уважением!
Я успешно использовал SharedPreferences, но чтобы перейти к следующему действию, он не отображался в текстовом виде, а только вступал в другое действие и возвращался к предыдущему, который был виден:/ –
Есть настройки «Частные для активности» и " Глобальный стандарт по умолчанию ", убедитесь, что вы используете тот, у которого есть весь охват приложения, в сообщении указано, что проблема подробно ... –
Вы можете хранить разные значения в своих намерениях.Вот официальный Пример Google: Google
Намерение
В деятельности A:
public final static String EXTRA_MESSAGE = "com.example.myfirstapp.MESSAGE";
Intent intent = new Intent(this, ActivityB.class);
String message = "Your String";
intent.putExtra(EXTRA_MESSAGE, message);
startActivity(intent);
И в деятельности B:
Intent intent = getIntent();
String message = intent.getStringExtra(ActivityA.EXTRA_MESSAGE);
В деятельности A:
private static final String PREV_STRING_VALUE = "prevStringValue";
String value = "yourString";
SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(this);
sp.edit().putString(PREV_STRING_VALUE, value).apply();
И в деятельности B:
SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(this);
String value = sp.getString(ActivityA.PREV_STRING_VALUE, "DefaultValue");
Или некоторые другие подходы:
Существует так много способов передать ваши данные. Но какой тип реализации вам понадобится, всегда зависит от ситуации. Если вы хотите, чтобы ваши данные передавались только следующему действию/фрагменту, а это временные данные, просто используйте намерения.
Если вам нужны ваши данные в дальнейшем процессе вашего приложения, используйте базы данных SQLite или SharedPreferences (если это не сложные данные). Сохраните свою ценность, и вы можете получить к ней доступ, когда захотите, где хотите.
Но когда вы закроете приложение и вернетесь к нему, он будет сохранен пользователю? –
Нет, тогда вам понадобятся общие настройки или база данных SQLite. – blackfizz
вы не можете определить, какое приложение EditText'm вводит! –
Вы можете сделать это тонна способов ..
Одно существо с Preferences
так, например
int myVal = 16;
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
prefs.edit().putInt("MY_KEY",myVal).commit();
Затем, в следующей деятельности
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
prefs.getInt("MY_KEY", 0); //Where 0 is the default value
Вы также можете нас е намерения, как вы сказали
int myVal = 16
Intent intent = new Intent(); //Make your intent as you normally would
intent.putExtra("MY_KEY", myVal);
И в onCreate()
вашей следующей деятельности:
int myVal = getIntent().getExtras().getInt("MY_VALUE");
Однако эти основные реализации. Как сказал Арту Делуо, есть много разных способов сделать это. Вы можете сделать это с помощью фрагментов, статических классов, других пакетов и т. Д. Это зависит от ситуации: лучше всего использовать намерение, чтобы вы не просто сохраняли значения в настройках без причины. Если вам нужно только перейти от действия A к активности B, просто используйте метод намерения. Если вам это нужно в разных местах, но вы не хотите отслеживать его? Используйте prefs.
Какой будет «контекст»? как показать результат в текстовом режиме сейчас? –
Контекст может быть любым контекстом. Попробуйте использовать «this»; Для остальных посмотрите некоторые уроки, потому что вы задаете очень простые вопросы, на которые были даны ответы много раз. https://developer.android.com/training/basics/firstapp/building-ui.html – VicVu
Огромное спасибо всем, кто мне помог, я очень рад видеть, что есть важные люди, которые все еще заботятся о нас. Простым решением был конфликт между идентификаторами кнопок сохранения, потому что он обладал одним и тем же идентификатором во всех действиях. Это означает! Спасибо всем!
Просто способ для хранения строкового значения и восстановления в другой деятельности: 1) В начальной активности первой активности, которая наиболее возвращаемый результат в виде строки (до создания окончательного ИНТ переменной, как как RETURN_DATA_AS_STRING)
Intent intent = new Intent(getApplicationContext(), ReturningResultActivity.class);
startActivityintent(intent,RETURN_DATA_AS_STRING);
2) В следующей активности для хранения данных сделать следующий шаг:
Intent intent = new Intent();
intent.putExtra("SomeStringIdentifier", "this is resulting string");
setResult(RESULT_OK,intent);
3) В первом переопределение активности onActivityResult():
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == RESULT_OK) {
switch (requestCode) {
case RETURN_DATA_AS_STRING: {
String thisIsResultStringFromAnotherActivity = data.getStringExtra("SomeStringIdentifier");
}
}
}
}
Я успешно использовал SharedPreferences, но чтобы перейти к следующему действию, он не был показан в текстовом режиме, только чтобы вступить в другое действие и вернуться к предыдущему, что было видно:/ –
Посмотрите на пример «SharedPreferences», с которым я связан , Вам просто нужно открыть префы и получить его оттуда, и вы можете использовать его в своем «TextView» – codeMagic
, может привести мне пример? –