Я хотел бы иметь возможность передавать данные из одной активности в другую. Как это можно сделать?
Перенос данных с одного действия на другое с использованием намерений
Ответ 1
В приведенном ниже коде мы можем отправлять значения между действиями
используйте приведенный ниже код в родительской активности
Intent myintent=new Intent(Info.this, GraphDiag.class).putExtra("<StringName>", value);
startActivity(myintent);
используйте приведенный ниже код в дочерней активности
String s= getIntent().getStringExtra(<StringName>);
Ответ 2
Существует несколько способов доступа к переменным или объектам в других классах или в Activity.
а. База данных
В. общие предпочтения.
С. Сериализация объектов.
Д. Класс, который может содержать общие данные, может быть назван как Common Utilities, он зависит от вас.
Е. Передача данных через Intents и Parcelable Interface.
Это зависит от ваших потребностей проекта.
а. База данных
SQLite - это база данных с открытым исходным кодом, встроенная в Android. SQLite поддерживает стандартные функции реляционных баз данных, такие как синтаксис SQL, транзакции и подготовленные операторы.
Учебники - http://www.vogella.com/articles/AndroidSQLite/article.html
В. Общие настройки
Предположим, вы хотите сохранить имя пользователя. Итак, теперь будет два элемента: Key Username, Значение.
Как сохранить
// Create object of SharedPreferences.
SharedPreferences sharedPref = PreferenceManager.getDefaultSharedPreferences(this);
//now get Editor
SharedPreferences.Editor editor = sharedPref.edit();
//put your value
editor.putString("userName", "stackoverlow");
//commits your edits
editor.commit();
Используя putString(), putBoolean(), putInt(), putFloat(), putLong(), вы можете сохранить желаемый тип dtatype.
Как получить
SharedPreferences sharedPref = PreferenceManager.getDefaultSharedPreferences(this);
String userName = sharedPref.getString("userName", "Not Available");
http://developer.android.com/reference/android/content/SharedPreferences.html
С. Сериализация объектов
Serlization объекта используется, если мы хотим сохранить состояние объекта, чтобы отправить его по сети, или вы также можете использовать его для своей цели.
Используйте java beans и сохраните в нем как одно из своих полей и используйте для этого геттеры и сеттеры
JavaBeans - это классы Java, обладающие свойствами. Думать о свойства как частные переменные экземпляра. Поскольку они являются частными, единственный способ к ним можно получить доступ извне своего класса через методы в классе. методы, которые изменяют значение свойства, называются методами setter, а методы которые извлекают значение свойства, называются методами getter.
public class VariableStorage implements Serializable {
private String inString ;
public String getInString() {
return inString;
}
public void setInString(String inString) {
this.inString = inString;
}
}
Задайте переменную в своем почтовом методе, используя
VariableStorage variableStorage = new VariableStorage();
variableStorage.setInString(inString);
Затем используйте объект Serialzation для сериализации этого объекта, а в другом классе десериализуйте этот объект.
В сериализации объект может быть представлен как последовательность байтов, которая включает данные объекта, а также информацию о типе объекта и типах данных, хранящихся в объекте.
После того, как сериализованный объект был записан в файл, он может быть прочитан из файла и десериализован, то есть информация о типе и байты, которые представляют объект и его данные, могут быть использованы для воссоздания объекта в памяти.
Если вы хотите, чтобы учебник для этого ссылался на эту ссылку
http://javawithswaranga.blogspot.in/2011/08/serialization-in-java.html
Получить переменную в других классах
Д. CommonUtilities
Вы можете создать класс по себе, который может содержать общие данные, которые вам часто нужны в вашем проекте.
Пример
public class CommonUtilities {
public static String className = "CommonUtilities";
}
Е. Передача данных с помощью намерений
Пожалуйста, обратитесь к этому руководству для этой опции передачи данных.
Ответ 3
Когда вы передаете данные из одной активности в другую, выполните следующие действия
В родительской активности:
startActivity(new Intent(presentActivity.this, NextActivity.class).putExtra("KEY_StringName",ValueData));
или как показано ниже в разделе Родительская активность
Intent intent = new Intent(presentActivity.this,NextActivity.class);
intent.putExtra("KEY_StringName", name);
intent.putExtra("KEY_StringName1", name1);
startActivity(intent);
В дочерней активности выполните, как показано ниже
TextView tv = ((TextView)findViewById(R.id.textViewID))
tv.setText(getIntent().getStringExtra("KEY_StringName"));
или выполните действия, описанные ниже в дочерней активности
TextView tv = ((TextView)findViewById(R.id.textViewID));
TextView tv1 = ((TextView)findViewById(R.id.textViewID1))
/* Get values from Intent */
Intent intent = getIntent();
String name = intent.getStringExtra("KEY_StringName");
String name1 = intent.getStringExtra("KEY_StringName1");
tv.setText(name);
tv.setText(name1);
Ответ 4
Передача данных из одной активности в другую в android
Intent intent = new Intent(context, YourActivityClass.class);
intent.putExtra(KEY, <your value here>);
startActivity(intent);
Извлечение данных о связке из андроидной активности
Intent intent = getIntent();
if (intent!=null) {
String stringData= intent.getStringExtra(KEY);
int numberData = intent.getIntExtra(KEY, defaultValue);
boolean booleanData = intent.getBooleanExtra(KEY, defaultValue);
char charData = intent.getCharExtra(KEY, defaultValue); }
Ответ 5
Надеюсь, вы найдете ответ отсюда Отправка данных в другую деятельность - Простой вход в Android
Ответ 6
Вам просто нужно отправить дополнительные функции при вызове вашего намерения
вот так:
Цель намерения = новый намерение (getApplicationContext(), SecondActivity.class); intent.putExtra( "Имя переменной", "Значение, которое вы хотите передать" ); startActivity (намерение);
Теперь в методе OnCreate вашего SecondActivity вы можете получить дополнительные функции, такие как
Если значение u отправлено в "long"
long value = getIntent(). getLongExtra ( "Имя переменной, которое вы отправили как дополнительный", defaultValue (вы можете дать ему что-нибудь));
Если значение u sent было "String"
Значение строки = getIntent(). getStringExtra ( "Имя переменной, которое вы отправили в качестве дополнительного" );
Если значение u sent было "Boolean"
Логическое value = getIntent(). getStringExtra ( "Имя переменной, которое вы отправили как дополнительный", defaultValue);
Ответ 7
Ваша цель
Предположим, вы хотите перейти от к действию A в действие B.
Итак, мы используем намерение для переключения активности
типичный код выглядит так:
В действии A [A.class]
//// Create a New Intent object
Intent i = new Intent(getApplicationContext(), B.class);
/// add what you want to pass from activity A to Activity B
i.putExtra("key", "value");
/// start the intent
startActivity(i);
В действии B [B.class]
И получить данные из дочернего процесса
Intent i = getIntent();
if (i!=null) {
String stringData= i.getStringExtra("key");
}
Ответ 8
Это лучше всего работает:
В приведенном ниже коде мы можем отправлять значения между действиями
используйте приведенный ниже код в родительской активности (КОД ОТКРЫТИЯ КЛАССА/ЦЕННОСТЕЙ)
Intent myintent=new Intent(<PARENTCLASSNAMEHERE>.this,<TARGETCLASSNAMEHERE>.class).putExtra("<StringName>", value);
startActivity(myintent);
используйте приведенный ниже код в дочерней активности (TARGET CLASS/ACTIVITY)
String s= getIntent().getStringExtra(<StringName>);
Пожалуйста, смотрите здесь, что "StringName" - это имя, которое получает целевой/дочерний актив, в то время как "value" - это имя переменной, такое же, как в классе parent/target/send.