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 defaultkey
als 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 intent
in 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 Activity
die 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 strings
doorgeven. Dus laten we zeggen dat je een ArrayList
moet 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