Как получить дополнительные данные от intent на Android?
Как я могу отправить данные из одного вида деятельности (намерения) в другой?
Я использую этот код для отправки данных:
Intent i=new Intent(context,SendMessage.class);
i.putExtra("id", user.getUserAccountId()+"");
i.putExtra("name", user.getUserFullName());
context.startActivity(i);
15 ответов:
во-первых, получить намерение, которое начало свою деятельность с помощью
getIntent()способ:Intent intent = getIntent();если ваши дополнительные данные представлены в виде строк, то можно использовать
intent.getStringExtra(String name)метод. В вашем случае:String id = intent.getStringExtra("id"); String name = intent.getStringExtra("name");
в приемном действии
Bundle extras = getIntent().getExtras(); String userName; if (extras != null) { userName = extras.getString("name"); // and get whatever type user account id is }
// How to send value using intent from one class to another class // class A(which will send data) Intent theIntent = new Intent(this, B.class); theIntent.putExtra("name", john); startActivity(theIntent); // How to get these values in another class // Class B Intent i= getIntent(); i.getStringExtra("name"); // if you log here i than you will get the value of i i.e. john
добавить вверх
Набор Данных
String value = "Hello World!"; Intent intent = new Intent(getApplicationContext(), NewActivity.class); intent.putExtra("sample_name", value); startActivity(intent);Узнать Информацию
String value; Bundle bundle = getIntent().getExtras(); if (bundle != null) { value = bundle.getString("sample_name"); }
вместо инициализации другого нового намерения для получения данных, просто сделайте это:
String id = getIntent().getStringExtra("id");
Если используется в FragmentActivity, попробуйте следующее:
первая страница выходит FragmentActivity
Intent Tabdetail = new Intent(getApplicationContext(), ReceivePage.class); Tabdetail.putExtra("Marker", marker.getTitle().toString()); startActivity(Tabdetail);во фрагменте, вам просто нужно позвонить
getActivity()первый,вторая страница выходит фрагмент:
String receive = getActivity().getIntent().getExtras().getString("name");
Если вы пытаетесь получить дополнительные данные, в фрагменты то вы можете попробовать использовать :
разместить данные с помощью:
Bundle args = new Bundle(); args.putInt(DummySectionFragment.ARG_SECTION_NUMBER);получить данные с помощью:
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { getArguments().getInt(ARG_SECTION_NUMBER); getArguments().getString(ARG_SECTION_STRING); getArguments().getBoolean(ARG_SECTION_BOOL); getArguments().getChar(ARG_SECTION_CHAR); getArguments().getByte(ARG_SECTION_DATA); }
вы можете получить любой тип дополнительных данных от intent, независимо от того, если это объект или жало или anytype данных.
Bundle extra = getIntent().getExtras(); if (extra != null){ String str1 = (String) extra.get("obj"); // get a object String str2 = extra.getString("string"); //get a string }
просто предложение:
вместо использования "id" или"name"в вашем i.putExtra ("id".....), Я бы предложил, когда это имеет смысл, использовать текущие стандартные поля, которые могут быть использованы с putExtra (), т. е. Intent.EXTRA_something.
полный список можно найти по адресу намерение (Разработчиков Android).
мы можем сделать это простым способом:
В FirstActivity:
Intent intent = new Intent(FirstActivity.this, SecondActivity.class); intent.putExtra("uid", uid.toString()); intent.putExtra("pwd", pwd.toString()); startActivity(intent);В SecondActivity:
try { Intent intent = getIntent(); String uid = intent.getStringExtra("uid"); String pwd = intent.getStringExtra("pwd"); } catch (Exception e) { e.printStackTrace(); Log.e("getStringExtra_EX", e + ""); }
вы также можете сделать такой
// поместить значение в намеренияхIntent in = new Intent(MainActivity.this, Booked.class); in.putExtra("filter", "Booked"); startActivity(in);// получить значение от намерения
Intent intent = getIntent(); Bundle bundle = intent.getExtras(); String filter = bundle.getString("filter");
получение различных типов дополнительных от Intent
чтобы получить доступ к данным из намерения, вы должны знать две вещи.
- ключ
- тип данных.
существуют различные методы в классе Intent для извлечения различных типов данных. Это выглядит так
getIntent ().XXXX (ключ) или намерение.XXX (КЛЮЧ);
Поэтому, если вы знаете тип данных вашего varibale, который вы установили в otherActivity вы можете использовать соответствующий метод.например, чтобы получить строку в ваших действиях умысла
String profileName = getIntent().getStringExtra("SomeKey");список различных вариантов методов для разных типов данных
вы можете увидеть список доступных методов в официальной документации намерение.
Это для адаптера, для активности вам просто нужно изменить mContext для вашего имени Activty и для фрагмента вам нужно изменить mContext на getActivity()
public static ArrayList<String> tags_array ;// static array list if you want to pass array data public void sendDataBundle(){ tags_array = new ArrayList(); tags_array.add("hashtag");//few array data tags_array.add("selling"); tags_array.add("cityname"); tags_array.add("more"); tags_array.add("mobile"); tags_array.add("android"); tags_array.add("dress"); Intent su = new Intent(mContext, ViewItemActivity.class); Bundle bun1 = new Bundle(); bun1.putString("product_title","My Product Titile"); bun1.putString("product_description", "My Product Discription"); bun1.putString("category", "Product Category"); bun1.putStringArrayList("hashtag", tags_array);//to pass array list su.putExtras(bun1); mContext.startActivity(su); }
передайте намерение со значением на первом действии:
Intent intent = new Intent(FirstActivity.this, SecondActivity.class); intent.putExtra("uid", uid.toString()); intent.putExtra("pwd", pwd.toString()); startActivity(intent);получить намерение на второй деятельности; -
Inetent intent=getIntent(); String User=intent.getStringExtra("uid"); String Pass=intent.getStringExtra("pwd");мы обычно используем два метода в намерении отправить значение и получить значение. Для отправки значения мы будем использовать
intent.putExtra("Key",Value);и во время получения намерения на другую деятельность мы будем использоватьintent.getStringExtra("Key");, вот ключ может быть любое ключевое слово, чтобы определить значение, какое значение вы используете. Надеюсь, что это сработает для вас.
Я только что опубликовал ответ здесь это охватывает эту тему немного более подробно, включая некоторые альтернативы.
использует Vapor API, новый jQuery вдохновил Android framework я написал, чтобы упростить Android dev. Проверьте пример в этом ответе, как вы можете легко передавать данные между активностями.
также он демонстрирует
VaporIntent, что позволяет вам цеплять вызовы методов и использовать перегруженный.put(...)метод:$.Intent().put("data", "myData").put("more", 568)...вы можете легко передавать данные во все свои приложения, используя Vapor API, так что надеюсь, это будет полезно для вас и других в процессе разработки приложения.
Comments