Hoe putExtra() en getExtra() te gebruiken voor stringgegevens

Kan iemand me vertellen hoe ik getExtra()en putExtra()precies moet gebruiken voor intenties? Eigenlijk heb ik een stringvariabele, zeg str, die een aantal stringgegevens opslaat. Nu wil ik deze gegevens van de ene activiteit naar een andere activiteit sturen.

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

en dan 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 
        }
    }

Ik weet dat het een heel basale vraag is, maar helaas zit ik hier vast.
Help alstublieft.

Bedankt,

Bewerken: hier is de string die ik probeer door te geven van het ene scherm naar het andere dynamisch.
Dat wil zeggen dat ik een editText heb waar ik een string krijg, ongeacht het type gebruiker. Dan met behulp van myEditText.getText().toString(). Ik krijg de ingevoerde waarde als een tekenreeks, dan moet ik deze gegevens doorgeven.


Antwoord 1, autoriteit 100%

Gebruik dit om het bestand te “plaatsen”…

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

Probeer vervolgens iets als:

. om de waarde op te halen

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

Antwoord 2, autoriteit 17%

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

Tweede scherm.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);
        }
    }
}

Antwoord 3, autoriteit 12%

Beste methode…

Verzendactiviteit

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

RecievingActivity

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

/// kortste manier om gegevens te ontvangen..

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

//Hiervoor is api 12 vereist.
//de tweede parameter is optioneel. Als keyName null is, gebruik dan de defaultkeyals data.


Antwoord 4, autoriteit 5%

Dit is wat ik heb gebruikt, hopelijk helpt het iemand.. eenvoudig en affectief.

gegevens verzenden

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

gegevens ophalen

   int mealId;
    Intent intent = getIntent();
    Bundle bundle = intent.getExtras();
    if(bundle != null){
        mealId = bundle.getInt("mealID");
    }

proost!


Antwoord 5, autoriteit 2%

Het is heel eenvoudig om intentin Android te implementeren.. Het kost je om van de ene activiteit naar de andere te gaan, we moeten op twee manieren putExtra();en getExtra();Nu laat ik je het voorbeeld zien..

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

Nu moeten we de waarde van AnyKeyName-parameter krijgen, de hieronder genoemde code helpt bij het doen van dit

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

We kunnen eenvoudig de ontvangende waarde instellen van Intent, waar we ook nodig zijn.


Antwoord 6

Een klein addendum: u hoeft niet uw eigen naam voor de sleutel te maken, Android biedt deze, f.ex. Intent.EXTRA_TEXT. Het geaccepteerde antwoord wijzigen:

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

Dan, om de waarde op te halen, probeer dan zoiets als:

String newString;
Bundle extras = getIntent().getExtras();
if(extras == null) {
    newString= null;
} else {
    newString= extras.getString(Intent.EXTRA_TEXT);
}

Antwoord 7

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

Applicatieactiviteit

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

Antwoord 8

Eenvoudiger

afzender

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

ontvangerzijde

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

Antwoord 9

Update in de klasse Intent.

  • Gebruik hasExtra()om te controleren of de intentie gegevens op de sleutel heeft.
  • U kunt getStringExtra()nu rechtstreeks gebruiken.

Gegevens doorgeven

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

Gegevens ophalen

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

Plaats sleutels altijd in constanten als best practice.

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

Antwoord 10

Tekenreeks in intentieobject plaatsen

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

VolgendeAcitvity in onCreate methode get String

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

dat is een gemakkelijke en korte methode


Antwoord 11

verzenden

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

krijgen

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

Antwoord 12

Bij FirstScreen.java

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

Bij SecondScreen.java

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

Antwoord 13

put-functie

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

Antwoord 14

Gegevens pushen

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

De bovenstaande code bevindt zich mogelijk in de hoofd Activity. “MyActivity.class” is de tweede Activitydie we willen lanceren; het moet expliciet worden opgenomen in uw AndroidManifest.xml-bestand.

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

Gegevens ophalen

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

In dit voorbeeld zou de bovenstaande code in uw MyActivity.java-bestand staan.

Gekregen

Deze methode kan alleen stringsdoorgeven. Dus laten we zeggen dat je een ArrayListmoet doorgeven aan je ListActivity; een mogelijke oplossing is om een door komma’s gescheiden tekenreeks door te geven en deze vervolgens aan de andere kant te splitsen.

Alternatieve oplossingen

Gebruik SharedPreferences


Antwoord 15

Eenvoudig,
In eerste activiteit-

   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 tweede activiteit-

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

Je kunt indien/anders voorwaarden toevoegen als je wilt.


Antwoord 16

zet de tekenreeks eerst

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

haal het daarna op

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

dat is alles 😉


Antwoord 17

Een enkele inline-code zou voldoende zijn voor deze taak. Dit werkte voor mij moeiteloos.
Voor #android-ontwikkelaars die er zijn.
String strValue=Objects.requireNonNull(getIntent().getExtras()).getString("string_Key");


Antwoord 18

Je kunt gewoon een statische variabele gebruiken om de string van je edittext op te slaan en die variabele vervolgens in de andere klasse gebruiken. Ik hoop dat dit je probleem zal oplossen

Other episodes