Antworten:
Einfach.
Intent myIntent = new Intent(CurrentActivity.this, NextActivity.class);
myIntent.putExtra("key", value); //Optional parameters
CurrentActivity.this.startActivity(myIntent);
Extras werden auf der anderen Seite abgerufen über:
@Override
protected void onCreate(Bundle savedInstanceState) {
Intent intent = getIntent();
String value = intent.getStringExtra("key"); //if it's a string you stored.
}
Vergessen Sie nicht, Ihre neue Aktivität in die Datei AndroidManifest.xml aufzunehmen:
<activity android:label="@string/app_name" android:name="NextActivity"/>
CurrentActivity.this.startActivity(myIntent)
und startActivity(myIntent)
?
Erstellen Sie eine Absicht für eine ViewPerson-Aktivität und übergeben Sie die PersonID (z. B. für eine Datenbanksuche).
Intent i = new Intent(getBaseContext(), ViewPerson.class);
i.putExtra("PersonID", personID);
startActivity(i);
In ViewPerson Activity können Sie dann das Bündel zusätzlicher Daten abrufen, sicherstellen, dass es nicht null ist (falls Sie manchmal keine Daten übergeben), und dann die Daten abrufen.
Bundle extras = getIntent().getExtras();
if(extras !=null)
{
personID = extras.getString("PersonID");
}
Wenn Sie jetzt Daten zwischen zwei Aktivitäten austauschen müssen, können Sie auch einen globalen Singleton verwenden.
public class YourApplication extends Application
{
public SomeDataClass data = new SomeDataClass();
}
Rufen Sie es dann in einer beliebigen Aktivität auf, indem Sie:
YourApplication appState = ((YourApplication)this.getApplication());
appState.data.CallSomeFunctionHere(); // Do whatever you need to with data here. Could be setter/getter or some other type of logic
Aktuelle Antworten sind großartig, aber für Anfänger ist eine umfassendere Antwort erforderlich. Es gibt drei verschiedene Möglichkeiten, um eine neue Aktivität in Android zu starten, und alle verwenden dieIntent
Klasse. Absicht | Android-Entwickler .
onClick
Attributs der Schaltfläche. (Anfänger)OnClickListener()
über eine anonyme Klasse. (Mittlere)switch
Anweisung. (Profi)Hier ist die Link zu meinem Beispiel, wenn Sie mitmachen möchten:
onClick
Attribut der Schaltfläche. (Anfänger)Schaltflächen haben ein onClick
Attribut, das sich in der XML-Datei befindet:
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="goToAnActivity"
android:text="to an activity" />
<Button
android:id="@+id/button2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="goToAnotherActivity"
android:text="to another activity" />
In der Java-Klasse:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main_activity);
}
public void goToAnActivity(View view) {
Intent intent = new Intent(this, AnActivity.class);
startActivity(intent);
}
public void goToAnotherActivity(View view) {
Intent intent = new Intent(this, AnotherActivity.class);
startActivity(intent);
}
Vorteil : Einfach im laufenden Betrieb herzustellen, modular und einfach mehrere einzustellenonClick
s auf die gleiche Absicht .
Nachteil : Schwierige Lesbarkeit bei der Überprüfung.
OnClickListener()
über eine anonyme Klasse. (Mittlere)Dies ist der Fall, wenn Sie setOnClickListener()
für jeden einen eigenen Wert festlegen button
und jeden überschreibenonClick()
einen eigenen Wert fest mit seiner eigenen Absicht.
In der Java-Klasse:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main_activity);
Button button1 = (Button) findViewById(R.id.button1);
button1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(view.getContext(), AnActivity.class);
view.getContext().startActivity(intent);}
});
Button button2 = (Button) findViewById(R.id.button2);
button2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(view.getContext(), AnotherActivity.class);
view.getContext().startActivity(intent);}
});
Vorteil : Einfach im laufenden Betrieb herzustellen.
Nachteil : Es wird viele anonyme Klassen geben, die die Lesbarkeit beim Überprüfen erschweren.
switch
Anweisung. (Profi)In diesem Fall verwenden Sie eine switch
Anweisung für Ihre Schaltflächen innerhalb deronClick()
Methode, um alle Schaltflächen der Aktivität zu verwalten.
In der Java-Klasse:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main_activity);
Button button1 = (Button) findViewById(R.id.button1);
Button button2 = (Button) findViewById(R.id.button2);
button1.setOnClickListener(this);
button2.setOnClickListener(this);
}
@Override
public void onClick(View view) {
switch (view.getId()){
case R.id.button1:
Intent intent1 = new Intent(this, AnActivity.class);
startActivity(intent1);
break;
case R.id.button2:
Intent intent2 = new Intent(this, AnotherActivity.class);
startActivity(intent2);
break;
default:
break;
}
Vorteil : Einfache Tastenverwaltung, da alle Tastenabsichten in einer einzigen onClick()
Methode registriert werden
Den zweiten Teil der Frage, Daten übergeben, finden Sie unter Wie übergebe ich Daten zwischen Aktivitäten in einer Android-Anwendung?
Wenn der Benutzer auf die Schaltfläche klickt, direkt im XML wie folgt:
<Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="TextButton"
android:onClick="buttonClickFunction"/>
Mit dem Attribut android:onClick
deklarieren wir den Methodennamen, der in der übergeordneten Aktivität vorhanden sein muss. Also muss ich diese Methode in unserer Aktivität so erstellen:
public void buttonClickFunction(View v)
{
Intent intent = new Intent(getApplicationContext(), Your_Next_Activity.class);
startActivity(intent);
}
Intent iinent= new Intent(Homeactivity.this,secondactivity.class);
startActivity(iinent);
Intent in = new Intent(getApplicationContext(),SecondaryScreen.class);
startActivity(in);
This is an explicit intent to start secondscreen activity.
Emmanuel,
Ich denke, die zusätzlichen Informationen sollten vor dem Start der Aktivität eingegeben werden, da die Daten sonst noch nicht verfügbar sind, wenn Sie mit der onCreate-Methode von NextActivity darauf zugreifen.
Intent myIntent = new Intent(CurrentActivity.this, NextActivity.class);
myIntent.putExtra("key", value);
CurrentActivity.this.startActivity(myIntent);
Versuchen Sie in der Sendeaktivität den folgenden Code
//EXTRA_MESSAGE is our key and it's value is 'packagename.MESSAGE'
public static final String EXTRA_MESSAGE = "packageName.MESSAGE";
@Override
protected void onCreate(Bundle savedInstanceState) {
....
//Here we declare our send button
Button sendButton = (Button) findViewById(R.id.send_button);
sendButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//declare our intent object which takes two parameters, the context and the new activity name
// the name of the receiving activity is declared in the Intent Constructor
Intent intent = new Intent(getApplicationContext(), NameOfReceivingActivity.class);
String sendMessage = "hello world"
//put the text inside the intent and send it to another Activity
intent.putExtra(EXTRA_MESSAGE, sendMessage);
//start the activity
startActivity(intent);
}
Versuchen Sie in der empfangenden Aktivität den folgenden Code:
protected void onCreate(Bundle savedInstanceState) {
//use the getIntent()method to receive the data from another activity
Intent intent = getIntent();
//extract the string, with the getStringExtra method
String message = intent.getStringExtra(NewActivityName.EXTRA_MESSAGE);
Fügen Sie dann einfach den folgenden Code zur Datei AndroidManifest.xml hinzu
android:name="packagename.NameOfTheReceivingActivity"
android:label="Title of the Activity"
android:parentActivityName="packagename.NameOfSendingActivity"
Versuchen Sie diese einfache Methode.
startActivity(new Intent(MainActivity.this, SecondActivity.class));
Der Weg, um neue Aktivitäten zu starten, besteht darin, eine Absicht zu senden. Es gibt eine bestimmte Art von Absicht, mit der Sie Daten von einer Aktivität an eine andere übergeben können. Meine Empfehlung ist, dass Sie sich die Android-Entwicklerdokumente ansehen, die sich auf Absichten beziehen . Es ist eine Fülle von Informationen zu diesem Thema und hat auch Beispiele.
Erste Aktivität
startActivity(Intent(this, SecondActivity::class.java)
.putExtra("key", "value"))
Zweite Aktivität
val value = getIntent().getStringExtra("key")
Vorschlag
Legen Sie die Schlüssel immer in einer konstanten Datei ab, um sie besser verwalten zu können.
companion object {
val PUT_EXTRA_USER = "user"
}
startActivity(Intent(this, SecondActivity::class.java)
.putExtra(PUT_EXTRA_USER, "value"))
Das Starten einer Aktivität von einer anderen Aktivität aus ist unter Android-Anwendungen ein sehr häufiges Szenario.
Um eine Aktivität zu starten, benötigen Sie ein Intent- Objekt.
Ein Intent-Objekt nimmt in seinem Konstruktor zwei Parameter an
Beispiel:
Wenn Sie beispielsweise zwei Aktivitäten haben, sagen Sie HomeActivity
und DetailActivity
und DetailActivity
von HomeActivity
(HomeActivity -> DetailActivity) ausgehen möchten.
Hier ist das Code-Snippet, das zeigt, wie DetailActivity gestartet wird
HomeActivity.
Intent i = new Intent(HomeActivity.this,DetailActivity.class);
startActivity(i);
Und du bist fertig.
Zurück zum Button-Klick-Teil.
Button button = (Button) findViewById(R.id.someid);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent i = new Intent(HomeActivity.this,DetailActivity.class);
startActivity(i);
}
});
Starten Sie eine andere Aktivität von dieser Aktivität aus und Sie können Parameter auch über Bundle Object übergeben.
Intent intent = new Intent(getBaseContext(), YourActivity.class);
intent.putExtra("USER_NAME", "xyz@gmail.com");
startActivity(intent);
Daten in einer anderen Aktivität abrufen (YourActivity)
String s = getIntent().getStringExtra("USER_NAME");
Implementieren Sie die View.OnClickListener-Schnittstelle und überschreiben Sie die onClick-Methode.
ImageView btnSearch;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_search1);
ImageView btnSearch = (ImageView) findViewById(R.id.btnSearch);
btnSearch.setOnClickListener(this);
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.btnSearch: {
Intent intent = new Intent(Search.this,SearchFeedActivity.class);
startActivity(intent);
break;
}
Es wurden zwar bereits richtige Antworten gegeben, aber ich bin hier, um die Antwort in der Sprache Kotlin zu suchen. Diese Frage ist nicht sprachspezifisch, daher füge ich den Code hinzu, um diese Aufgabe in Kotlin-Sprache auszuführen.
Hier erfahren Sie, wie Sie dies in Kotlin für Andorid tun
testActivityBtn1.setOnClickListener{
val intent = Intent(applicationContext,MainActivity::class.java)
startActivity(intent)
}
Die einfachste Möglichkeit, Aktivitäten beim Klicken auf eine Schaltfläche zu öffnen, ist:
onclick
Funktion einen Namen . MainActivity.java
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.TextView;
import android.content.Intent;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void goToAnotherActivity(View view) {
Intent intent = new Intent(this, SecondActivity.class);
startActivity(intent);
}
}
SecondActivity.java
package com.example.myapplication;
import android.app.Activity;
import android.os.Bundle;
public class SecondActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity1);
}
}
AndroidManifest.xml (Fügen Sie einfach diesen Codeblock zum vorhandenen hinzu)
</activity>
<activity android:name=".SecondActivity">
</activity>
Nehmen Sie zuerst Button in XML.
<Button
android:id="@+id/pre"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@mipmap/ic_launcher"
android:text="Your Text"
/>
Listener der Schaltfläche machen.
pre.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(MainActivity.this, SecondActivity.class);
startActivity(intent);
}
});
Wenn auf die Schaltfläche geklickt wird:
loginBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent= new Intent(getApplicationContext(), NextActivity.class);
intent.putExtra("data", value); //pass data
startActivity(intent);
}
});
Um die zusätzlichen Daten zu erhalten von NextActivity.class
:
Bundle extra = getIntent().getExtras();
if (extra != null){
String str = (String) extra.get("data"); // get a object
}
Schreiben Sie den Code in Ihrer ersten Aktivität.
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(MainActivity.this, SecondAcitvity.class);
//You can use String ,arraylist ,integer ,float and all data type.
intent.putExtra("Key","value");
startActivity(intent);
finish();
}
});
In secondActivity.class
String name = getIntent().getStringExtra("Key");
Platzieren Sie das Schaltflächen-Widget wie unten in XML
<Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Button"
/>
Nach dieser Initialisierung und Bearbeitung des Klick-Listeners in Aktivität wie unten.
In der Methode "Aktivität beim Erstellen":
Button button =(Button) findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new
Intent(CurrentActivity.this,DesiredActivity.class);
startActivity(intent);
}
});