it-swarm.com.de

Verwendung von putExtra () und getExtra () für Zeichenfolgendaten

Kann mir jemand bitte sagen, wie genau getExtra() und putExtra() für Intents verwendet werden sollen? Eigentlich habe ich eine String-Variable, zB str, die einige String-Daten speichert. Nun möchte ich diese Daten von einer Aktivität an eine andere Aktivität senden. 

  Intent i = new Intent(FirstScreen.this, SecondScreen.class);   
  String keyIdentifer  = null;
  i.putExtra(strName, keyIdentifer );

und dann in SecondScreen.Java

 public void onCreate(Bundle savedInstanceState) 
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.table);
        TextView userName = (TextView)findViewById(R.id.userName);
        Bundle bundle = getIntent().getExtras();

        if(bundle.getString("strName")!= null)
        {
            //TODO here get the string stored in the string variable and do 
            // setText() on userName 
        }

    }

Ich weiß, es ist eine sehr grundlegende Frage, aber leider bin ich hier festgefahren. Bitte helfen.

Vielen Dank,

Edit: Hier ist die Zeichenfolge, die ich von einem Bildschirm zum anderen zu übergeben versuche, dynamisch .. Das heißt, ich habe einen editText, in dem ich Zeichenfolgen bekomme, die der Benutzer schreibt. Dann mit Hilfe von myEditText.getText().toString(). Ich bekomme den eingegebenen Wert als Zeichenfolge und muss diese Daten übergeben.

277
Shaista Naaz

Verwenden Sie dies, um die Datei zu "setzen" ...

Intent i = new Intent(FirstScreen.this, SecondScreen.class);   
String strName = null;
i.putExtra("STRING_I_NEED", strName);

Um den Wert abzurufen, versuchen Sie Folgendes:

String newString;
if (savedInstanceState == null) {
    Bundle extras = getIntent().getExtras();
    if(extras == null) {
        newString= null;
    } else {
        newString= extras.getString("STRING_I_NEED");
    }
} else {
    newString= (String) savedInstanceState.getSerializable("STRING_I_NEED");
}
369
Will Tate

erster Screen.Java

text=(TextView)findViewById(R.id.tv1);
edit=(EditText)findViewById(R.id.edit);
button=(Button)findViewById(R.id.bt1);

button.setOnClickListener(new OnClickListener() {
    public void onClick(View arg0) {
        String s=edit.getText().toString();

        Intent ii=new Intent(MainActivity.this, newclass.class);
        ii.putExtra("name", s);
        startActivity(ii);
    }
});

Zweiter Screen.Java

public class newclass extends Activity
{
    private TextView Textv;

    @Override
    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        setContentView(R.layout.intent);
        Textv = (TextView)findViewById(R.id.tv2);
        Intent iin= getIntent();
        Bundle b = iin.getExtras();

        if(b!=null)
        {
            String j =(String) b.get("name");
            Textv.setText(j);
        }
    }
}
63
ReemaRazdan

Beste Methode ...

Sendeaktivität 

Intent intent = new Intent(SendingActivity.this, RecievingActivity.class);
intent.putExtra("keyName", value);  // pass your values and retrieve them in the other Activity using keyName
startActivity(intent);

EmpfangenAktivität

 Bundle extras = intent.getExtras();
    if(extras != null)
    String data = extras.getString("keyName"); // retrieve the data using keyName 

/// kürzester Weg, um Daten zu erhalten ..

String data = getIntent().getExtras().getString("keyName","defaultKey");

// Dies erfordert API 12 . // Der zweite Parameter ist optional. Wenn keyName den Wert null hat, verwenden Sie die defaultkey als Daten.

44
Xar E Ahmer

Dies ist, was ich verwendet habe, hoffentlich hilft es jemandem .. einfach und effektiv.

schicke Daten

    intent = new Intent(getActivity(), CheckinActivity.class);
    intent.putExtra("mealID", meal.Meald);
    startActivity(intent);

daten empfangen

    int mealId;

    Intent intent = getIntent();
    Bundle bundle = intent.getExtras();

    if(bundle != null){
        mealId = bundle.getInt("mealID");
    }

prost!

15
Sindri Þór

Es ist sehr einfach, intent in Android zu implementieren. Um von einer Aktivität zu einer anderen zu wechseln, müssen wir zwei Methoden putExtra(); und getExtra();Nun zeigen.

    Intent intent = new Intent(activity_registration.this, activity_Login.class);
                intent.putExtra("AnyKeyName", Email.getText().toString());  // pass your values and retrieve them in the other Activity using AnyKeyName
                        startActivity(intent);

Jetzt müssen wir den Wert vom Parameter AnyKeyName abrufen, der unten angegebene Code hilft dabei

       String data = getIntent().getExtras().getString("AnyKeyName");
        textview.setText(data);

Wir können den Empfangswert problemlos von Intent aus einstellen, wo immer wir dies benötigen.

Ein kleiner Nachtrag: Sie müssen keinen eigenen Namen für den Schlüssel erstellen, Android liefert diesen, z. Intent.EXTRA_TEXT . Ändern der akzeptierten Antwort:

Intent i = new Intent(FirstScreen.this, SecondScreen.class);   
String strName = null;
i.putExtra(Intent.EXTRA_TEXT, strName);

Um den Wert abzurufen, versuchen Sie Folgendes:

String newString;
Bundle extras = getIntent().getExtras();
if(extras == null) {
    newString= null;
} else {
    newString= extras.getString(Intent.EXTRA_TEXT);
}
5
serv-inc
Intent intent = new Intent(view.getContext(), ApplicationActivity.class);
                        intent.putExtra("int", intValue);
                        intent.putExtra("Serializable", object);
                        intent.putExtra("String", stringValue);
                        intent.putExtra("parcelable", parObject);
                        startActivity(intent);

ApplicationActivity

Intent intent = getIntent();
Bundle bundle = intent.getExtras();

if(bundle != null){
   int mealId = bundle.getInt("int");
   Object object = bundle.getSerializable("Serializable");
   String string = bundle.getString("String");
   T string = <T>bundle.getString("parcelable");
}
4
Samet öztoprak

Einfacher 

absenderseite

Intent i = new Intent(SourceActiviti.this,TargetActivity.class);
i.putExtra("id","string data");
startActivity(i)

empfängerseite

Intent i = new Intent(SourceActiviti.this,TargetActivity.class);
String strData = i.getStringExtra("id");
2
David Untama

Update in Absicht Klasse.

  • Verwenden Sie hasExtra(), um zu prüfen, ob der Intent Daten im Schlüssel hat.
  • Sie können jetzt getStringExtra() direkt verwenden.

Passdaten

intent.putExtra(PutExtraConstants.USER_NAME, "user");

Daten empfangen

String userName;
if (getIntent().hasExtra(PutExtraConstants.USER_NAME)) {
    userName = getIntent().getStringExtra(PutExtraConstants.USER_NAME);
}

Geben Sie Schlüssel immer als Best Practice in Konstanten ein.

public interface PutExtraConstants {
    String USER_NAME = "USER_NAME";
}
1
Khemraj

Einfach, In der ersten Aktivität-

    EditText name= (EditText) findViewById(R.id.editTextName);
    Button button= (Button) findViewById(R.id.buttonGo);
    button.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent i = new Intent(MainActivity.this,Main2Activity.class);
            i.putExtra("name",name.getText().toString());
           startActivity(i);
          }
    });

In der zweiten Aktivität

    @Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main2);
    TextView t = (TextView) findViewById(R.id.textView);
    Bundle bundle=getIntent().getExtras();
    String s=bundle.getString("name");
    t.setText(s);
}

Sie können if/else-Bedingungen hinzufügen, wenn Sie möchten.

1

Push-Daten

import Android.content.Intent;

    ...

    Intent intent = 
        new Intent( 
            this, 
            MyActivity.class );
    intent.putExtra( "paramName", "paramValue" );
    startActivity( intent );

Der obige Code befindet sich möglicherweise im Haupt activity. "MyActivity.class" ist das zweite Activity, das wir starten möchten; Es muss explizit in Ihrer AndroidManifest.xml-Datei enthalten sein.

<activity Android:name=".MyActivity" />

Daten ziehen

import Android.os.Bundle;

    ...

    Bundle extras = getIntent().getExtras();
    if (extras != null)
    {
        String myParam = extras.getString("paramName");
    }
    else
    {
        //..oops!
    }

In diesem Beispiel befindet sich der obige Code in Ihrer MyActivity.Java-Datei.

Gotchas

Diese Methode kann nur strings übergeben. Nehmen wir also an, Sie müssen eine ArrayList an Ihre ListActivity übergeben. Eine mögliche Problemumgehung besteht darin, eine durch Kommas getrennte Zeichenfolge zu übergeben und sie dann auf der anderen Seite zu teilen.

Alternativlösungen

Verwenden Sie SharedPreferences

funktion setzen

etname=(EditText)findViewById(R.id.Name);
        tvname=(TextView)findViewById(R.id.tvName);

        b1= (ImageButton) findViewById(R.id.Submit);

        b1.setOnClickListener(new OnClickListener() {
            public void onClick(View arg0) {
                String s=etname.getText().toString();

                Intent ii=new Intent(getApplicationContext(), MainActivity2.class);
                ii.putExtra("name", s);
                Toast.makeText(getApplicationContext(),"Page 222", Toast.LENGTH_LONG).show();
                startActivity(ii);
            }
        });



getfunction 

public class MainActivity2 extends Activity {
    TextView tvname;
    EditText etname;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main_activity2);
        tvname = (TextView)findViewById(R.id.tvName);
        etname=(EditText)findViewById(R.id.Name);
        Intent iin= getIntent();
        Bundle b = iin.getExtras();

        if(b!=null)
        {

          String j2 =(String) b.get("name");

etname.setText(j2);
            Toast.makeText(getApplicationContext(),"ok",Toast.LENGTH_LONG).show();
        }
    }

senden

startActivity(new Intent(First.this, Secend.class).putExtra("key",edit.getText.tostring));

get

String myData = getIntent.getStringExtra("key");
0
H.Fa8

String in Intent-Objekt einfügen

  Intent intent = new Intent(FirstActivity.this,NextAcitivity.class);
  intent.putExtra("key",your_String);
  StartActivity(intent);

NextAcitvity in der onCreate-Methode get String

String my_string=getIntent().getStringExtra("key");

das ist eine einfache und kurze Methode

0
kamaljeet Singh

Sie können einfach eine statische Variable verwenden, um die Zeichenfolge Ihres Edittext zu speichern, und diese Variable dann in der anderen Klasse verwenden. Hoffe, dies wird Ihr Problem lösen

0
Adithya M P N

setze zuerst den String

Intent secondIntent = new Intent(this, typeof(SecondActivity));
            secondIntent.PutExtra("message", "Greetings from MainActivity");

danach abrufen 

var message = this.Intent.GetStringExtra("message");

das ist alles ;)

0
shyam_

Bei FirstScreen.Java

    Intent intent = new Intent(FirstScreen.this, SecondScreen.class);
    String keyIdentifier = null;
    intent.putExtra(strName, keyIdentifier);

Bei SecondScreen.Java

    String keyIdentifier;
    if (savedInstanceState != null)
        keyIdentifier= (String) savedInstanceState.getSerializable(strName);
    else
        keyIdentifier = getIntent().getExtras().getString(strName);
0