ある活動(意図)から別の活動にデータを送信するにはどうすればよいですか。
このコードを使ってデータを送信します。
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");
受け取り活動中
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");
}
データを受け取るために別の新しいIntentを初期化する代わりに、これを実行してください。
String id = getIntent().getStringExtra("id");
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);
}
インテントから任意の種類の追加データを得ることができます、オブジェクト、文字列、データの種類に関係なく.
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);
最初の活動
val intent = Intent(this, SecondActivity::class.Java)
intent.putExtra("key", "value")
startActivity(intent)
セカンドアクティビティ
val value = getIntent().getStringExtra("key")
提案
より管理しやすい方法で、常にキーを定数ファイルに入れてください。
companion object {
val PUT_EXTRA_USER = "PUT_EXTRA_USER"
}
**意図によるデータの配置 - **
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でエラーが発生します。
First Activityにインテントを値で渡します。
Intent intent = new Intent(FirstActivity.this, SecondActivity.class);
intent.putExtra("uid", uid.toString());
intent.putExtra("pwd", pwd.toString());
startActivity(intent);
第二次活動への意向を受ける -
Intent intent = getIntent();
String user = intent.getStringExtra("uid");
String pass = intent.getStringExtra("pwd");
値の送信と値の取得を目的として、一般的に2つの方法を使用します。値の送信にはintent.putExtra("key", Value);
を使用し、別のアクティビティへの受信インテント中はintent.getStringExtra("key");
を使用してString
として意図データを取得します他の種類のデータ(Integer
、Boolean
など)を取得するための他の利用可能な方法キーは値を識別するための任意のキーワードである可能性があります。あなたのために働きます。
ただの提案:
I.putExtra( "id" .....)で "id"または "name"を使用する代わりに、意味がある場合はputExtra()で使用できる現在の標準フィールドを使用することをお勧めします。 Intent.EXTRA_何か。
完全なリストはIntent(Android Developers)にあります。
簡単な方法でそれを行うことができます。
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 + "");
}
これはアダプタ用で、アクティビティ用には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からデータにアクセスするには、2つのことを知っておく必要があります。
Intentクラスには、さまざまな種類のデータ型を抽出するためのさまざまなメソッドがあります。
getIntent()。XXXX(KEY)またはintent.XXX(KEY)。
したがって、otherActivityで設定した変数のデータ型がわかっている場合は、それぞれの方法を使用できます。
String profileName = getIntent().getStringExtra("SomeKey");
利用可能なメソッドの一覧は Intent のOfficial Documentationにあります。
こんなこともできます
//値を意図する
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");