web-dev-qa-db-ja.com

Androidのインテントから余分なデータを取得する方法

ある活動(意図)から別の活動にデータを送信するにはどうすればよいですか。

このコードを使ってデータを送信します。

Intent i=new Intent(context,SendMessage.class);
i.putExtra("id", user.getUserAccountId()+"");
i.putExtra("name", user.getUserFullName());
context.startActivity(i);
679
Adham

まず、getIntent()メソッドを使ってあなたの活動を始めた意図を取得します。

Intent intent = getIntent();

追加のデータが文字列として表されている場合は、intent.getStringExtra(String name)メソッドを使用できます。あなたの場合:

String id = intent.getStringExtra("id");
String name = intent.getStringExtra("name");
1086
Malcolm

受け取り活動中

Bundle extras = getIntent().getExtras(); 
String userName;

if (extras != null) {
    userName = extras.getString("name");
    // and get whatever type user account id is
}
177
NickT
//  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
35
Sumit Sharma

追加

データ設定

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");
}
25
phi

データを受け取るために別の新しいIntentを初期化する代わりに、これを実行してください。

String id = getIntent().getStringExtra("id");
17
r_allela

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");
11
Bundit Ng

余分なデータを断片的に取得しようとしている場合は、次のようにして試すことができます。 

以下を使用してデータを配置します。

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);

}
6
star18bit

インテントから任意の種類の追加データを得ることができます、オブジェクト、文字列、データの種類に関係なく.

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);
2
Hasib Akter

コトリン

最初の活動

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"
}
2
Khemraj

**意図によるデータの配置 - **

 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でエラーが発生します。

2

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として意図データを取得します他の種類のデータ(IntegerBooleanなど)を取得するための他の利用可能な方法キーは値を識別するための任意のキーワードである可能性があります。あなたのために働きます。

1
Pradeep Sheoran

ただの提案:

I.putExtra( "id" .....)で "id"または "name"を使用する代わりに、意味がある場合はputExtra()で使用できる現在の標準フィールドを使用することをお勧めします。 Intent.EXTRA_何か。

完全なリストはIntent(Android Developers)にあります。

1
eva

簡単な方法でそれを行うことができます。

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 + "");
    }
1
sam

これはアダプタ用で、アクティビティ用には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);
        }
0
Android Geek

意図からさまざまなタイプのエクストラを取得する

Intentからデータにアクセスするには、2つのことを知っておく必要があります。

  • キー 
  • あなたのデータのDataType。

Intentクラスには、さまざまな種類のデータ型を抽出するためのさまざまなメソッドがあります。 

getIntent()。XXXX(KEY)またはintent.XXX(KEY)。


したがって、otherActivityで設定した変数のデータ型がわかっている場合は、それぞれの方法を使用できます。 

インテントからアクティビティの文字列を取得する例

String profileName = getIntent().getStringExtra("SomeKey");

さまざまなdataTypeに対するさまざまなメソッドのバリエーションのリスト

利用可能なメソッドの一覧は Intent のOfficial Documentationにあります。

0
Rohit Singh

こんなこともできます
//値を意図する

    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");
0
Savita Sharma