it-swarm.com.de

Wie erhalte ich zusätzliche Daten von Android?

Wie kann ich Daten von einer Aktivität (Absicht) zu einer anderen senden?

Ich verwende diesen Code, um Daten zu senden:

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

Ermitteln Sie zunächst die Absicht, mit der Ihre Aktivität mit der getIntent()-Methode begonnen hat:

Intent intent = getIntent();

Wenn Ihre zusätzlichen Daten als Zeichenfolgen dargestellt werden, können Sie die intent.getStringExtra(String name)-Methode verwenden. In Ihrem Fall:

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

In der empfangenden Tätigkeit

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

Add-up

Daten einstellen

String value = "Hello World!";
Intent intent = new Intent(getApplicationContext(), NewActivity.class);
intent.putExtra("sample_name", value);
startActivity(intent);

Daten empfangen

String value;
Bundle bundle = getIntent().getExtras();
if (bundle != null) {
    value = bundle.getString("sample_name");
}
25
phi

Anstatt eine weitere neue Absicht zu initialisieren, um die Daten zu empfangen, führen Sie einfach Folgendes aus:

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

Wenn dies in einer FragmentActivity verwendet wird, versuchen Sie Folgendes:

Die erste Seite erweitert FragmentActivity

Intent Tabdetail = new Intent(getApplicationContext(), ReceivePage.class);
Tabdetail.putExtra("Marker", marker.getTitle().toString());
startActivity(Tabdetail);

In dem Fragment müssen Sie lediglich getActivity() aufrufen,

Die zweite Seite erstreckt sich über Fragment :

String receive = getActivity().getIntent().getExtras().getString("name");
11
Bundit Ng

Wenn Sie versuchen, zusätzliche Daten in Fragmenten abzurufen, können Sie Folgendes verwenden: 

Daten platzieren mit:

Bundle args = new Bundle();
args.putInt(DummySectionFragment.ARG_SECTION_NUMBER);

Daten abrufen mit:

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

Sie können jede Art von zusätzlichen Daten von Intent erhalten , egal ob es sich um ein Objekt oder einen Stachel oder um irgendeine Art von Daten handelt.

Bundle extra = getIntent().getExtras();

if (extra != null){
    String str1 = (String) extra.get("obj"); // get a object

    String str2 =  extra.getString("string"); //get a string
}

und Kürzeste Lösung :

Boolean isGranted = getIntent().getBooleanExtra("tag", false);
2
Hasib Akter

Kotlin

Erste Aktivität

val intent = Intent(this, SecondActivity::class.Java)
intent.putExtra("key", "value")
startActivity(intent)

Zweite Aktivität

val value = getIntent().getStringExtra("key")

Vorschlag

Legen Sie die Schlüssel immer in einer konstanten Datei ab, um die Verwaltung zu erleichtern.

companion object {
    val PUT_EXTRA_USER = "PUT_EXTRA_USER"
}
2
Khemraj

** Daten absichtlich einfügen - **

 Intent intent = new Intent(mContext, HomeWorkReportActivity.class);
            intent.putExtra("subjectName","Maths");
            intent.putExtra("instituteId",22);
            mContext.startActivity(intent);

** Daten abrufen nach Absicht - **

  String subName = getIntent().getStringExtra("subjectName");
  int insId  getIntent().getIntExtra("instituteId",0);

wenn wir Integer value by Intent senden. wenn wir den 2. Parameter 0 in getIntent (). getIntExtra ("instituteId", 0) verwenden müssen andernfalls verwenden wir keine 0, dann gibt Android mir eine Fehlermeldung.

2

Übergeben Sie die Absicht mit Wert bei der ersten Aktivität:

Intent intent = new Intent(FirstActivity.this, SecondActivity.class);
intent.putExtra("uid", uid.toString());
intent.putExtra("pwd", pwd.toString());
startActivity(intent);

Erhalte Absicht bei der zweiten Aktivität; -

Intent intent = getIntent();
String user = intent.getStringExtra("uid");
String pass = intent.getStringExtra("pwd");

Wir verwenden in der Regel zwei Methoden, um den Wert zu senden und den Wert zu erhalten. __ Für das Senden des Werts verwenden wir intent.putExtra("key", Value);, und während der Empfangsabsicht auf eine andere Aktivität verwenden wir intent.getStringExtra("key");, um die Absichtsdaten als String zu erhalten oder eine andere zu verwenden verfügbare Methode zum Abrufen anderer Datentypen (Integer, Boolean usw.) .. Der Schlüssel kann ein beliebiges Schlüsselwort sein, um den Wert zu identifizieren. Dies bedeutet, dass der Wert, den Sie gemeinsam verwenden, .. _. Hoffe, dass es für Sie funktioniert.

1
Pradeep Sheoran

Nur ein Vorschlag:

Anstelle von "id" oder "name" in Ihrem i.putExtra ("id" .....) würde ich, wenn es sinnvoll ist, die aktuellen Standardfelder verwenden, die mit putExtra () verwendet werden können, d Intent.EXTRA_something.

Eine vollständige Liste finden Sie unter Intent (Android Developers).

1
eva

Wir können es mit einfachen Mitteln tun:

In FirstActivity:

Intent intent = new Intent(FirstActivity.this, SecondActivity.class);
intent.putExtra("uid", uid.toString());
intent.putExtra("pwd", pwd.toString());
startActivity(intent);

In 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

Dies ist für Adapter, für Aktivitäten müssen Sie lediglich mContext .__ ändern. zu Ihrem Activty-Namen und für Fragment müssen Sie mContext in .__ ändern. 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

Verschiedene Arten von Extra von Absicht erhalten

Um auf Daten von Intent zuzugreifen, sollten Sie zwei Dinge kennen.

  • SCHLÜSSEL 
  • Datentyp Ihrer Daten.

In der Intent-Klasse gibt es verschiedene Methoden, um verschiedene Arten von Datentypen zu extrahieren ... Es sieht so aus 

getIntent (). XXXX (KEY) oder intent.XXX (KEY);


Wenn Sie also den Datentyp Ihrer Variablen kennen, den Sie in otherActivity eingestellt haben, können Sie die entsprechende Methode verwenden. 

Beispiel zum Abrufen von String in Ihrer Aktivität von Intent

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

Liste verschiedener Methodenvarianten für verschiedene Datentypen

Die Liste der verfügbaren Methoden finden Sie in der offiziellen Dokumentation von Intent .

0
Rohit Singh

Das kannst du auch so machen
// Wert in Absicht setzen

    Intent in = new Intent(MainActivity.this, Booked.class);
    in.putExtra("filter", "Booked");
    startActivity(in);

// Wert aus Absicht erhalten

    Intent intent = getIntent();
    Bundle bundle = intent.getExtras();
    String filter = bundle.getString("filter");
0
Savita Sharma