あるアクティビティ(インテント)から別のアクティビティにデータを送信するにはどうすればよいですか?
このコードを使用してデータを送信します。
Intent i=new Intent(context,SendMessage.class);
i.putExtra("id", user.getUserAccountId()+"");
i.putExtra("name", user.getUserFullName());
context.startActivity(i);
あるアクティビティ(インテント)から別のアクティビティにデータを送信するにはどうすればよいですか?
このコードを使用してデータを送信します。
Intent i=new Intent(context,SendMessage.class);
i.putExtra("id", user.getUserAccountId()+"");
i.putExtra("name", user.getUserFullName());
context.startActivity(i);
回答:
まず、getIntent()
メソッドを使用してアクティビティを開始したインテントを取得します。
Intent intent = getIntent();
追加データが文字列として表されている場合は、intent.getStringExtra(String name)
メソッドを使用できます。あなたの場合:
String id = intent.getStringExtra("id");
String name = intent.getStringExtra("name");
getIntent().getStringExtra("id");
id文字列を取得するために呼び出します
getIntent()
メソッドを呼び出すことで、アクティビティを開始したインテントを取得できます。答えを更新しました。
受取り活動中
Bundle extras = getIntent().getExtras();
String userName;
if (extras != null) {
userName = extras.getString("name");
// and get whatever type user account id is
}
getStringExtra?
null
、エキストラフェッチ全体をスキップできます。を使用するとgetStringExtra
、基本的には一連のに変更されますif(extras != null) { return extras.getString(name) }
。getStringExtra
呼び出すものごとに1つ。このオプションはnull
1度チェックし、そうである場合は、まったく読み取りを行いませんBundle
。その上、getStringExtra
おそらくgetExtras
内部的にも毎回尋ね続けるでしょう。つまり、関数の呼び出しが増えるだけです。
// 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");
}
FragmentActivityで使用する場合は、これを試してください。
最初のページはFragmentActivityを拡張します
Intent Tabdetail = new Intent(getApplicationContext(), ReceivePage.class);
Tabdetail.putExtra("Marker", marker.getTitle().toString());
startActivity(Tabdetail);
フラグメントでは、getActivity()
最初に呼び出す必要があります、
2ページ目はFragmentを拡張します。
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から任意の種類の追加データを取得できます。
Bundle extra = getIntent().getExtras();
if (extra != null){
String str1 = (String) extra.get("obj"); // get a object
String str2 = extra.getString("string"); //get a string
}
そして最短の解決策は:
Boolean isGranted = getIntent().getBooleanExtra("tag", false);
**データを目的別に配置-**
Intent intent = new Intent(mContext, HomeWorkReportActivity.class);
intent.putExtra("subjectName","Maths");
intent.putExtra("instituteId",22);
mContext.startActivity(intent);
**意図によるデータの取得-**
String subName = getIntent().getStringExtra("subjectName");
int insId getIntent().getIntExtra("instituteId",0);
Intentで整数値を送る場合。getIntent()。getIntExtra( "instituteId"、0) で2番目のパラメータ0を使用する必要がある場合、それ以外の場合は0を使用しないため、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 intent = new Intent(FirstActivity.this, SecondActivity.class);
intent.putExtra("uid", uid.toString());
intent.putExtra("pwd", pwd.toString());
startActivity(intent);
2番目のアクティビティの意図を受け取る;-
Intent intent = getIntent();
String user = intent.getStringExtra("uid");
String pass = intent.getStringExtra("pwd");
通常、値を送信して値を取得するために、2つの方法を使用します。私たちが使用する値を送信するためにintent.putExtra("key", Value);
、我々が使用する別の活動に熱心受信時のintent.getStringExtra("key");
よう意図データを取得するString
か、他のタイプのデータ(取得するためにいくつかの他の利用可能な方法を使用してInteger
、Boolean
など)。キーは、値を識別するための任意のキーワードである可能性があり、どの値を共有しているかを意味します。それがあなたのために働くことを願っています。
Intentからデータにアクセスするには、2つのことを知っておく必要があります。
Intentクラスには、さまざまな種類のデータ型を抽出するためのさまざまなメソッドがあります。こんな感じ
getIntent()。XXXX(KEY)またはintent.XXX(KEY);
そのため、otherActivityで設定した変数のデータ型がわかっている場合は、それぞれのメソッドを使用できます。
String profileName = getIntent().getStringExtra("SomeKey");
使用可能なメソッドのリストは、Intentの公式ドキュメントで確認できます。
これはアダプタ用で、アクティビティの場合はmContextをアクティビティ名に変更するだけでよく、フラグメントの場合は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);
}
いくつかの選択肢を含め、このトピックをもう少し詳しくカバーする回答をここに投稿しました。
それは、私がAndroid開発を簡素化するために書いた新しいjQueryに触発されたAndroidフレームワークであるVapor APIを利用しています。アクティビティ間でデータを簡単に渡す方法については、その回答の例をご覧ください。
また、を示してVaporIntent
います。これにより、メソッド呼び出しをチェーンし、オーバーロードされた.put(...)
メソッドを利用できます。
$.Intent().put("data", "myData").put("more", 568)...
Vapor APIを使用すると、アプリケーション全体でデータを簡単に渡すことができるので、アプリ開発中にあなたや他の人に役立つことを願っています。
user.getUserAccountId()+""
でintを文字列に変換する優れた迅速な方法と見なされることがよくあります。不要なオブジェクトが作成されるためです。収集されます。String.valueOf(user.getUserAccountId)
またはの使用を検討してくださいInteger.toString(user.getUserAccountId)
。