with - start activity from button click android




So starten Sie eine neue Aktivität beim Klicken auf die Schaltfläche (12)

Wie startet man in einer Android-Anwendung eine neue Aktivität (GUI), wenn auf eine Schaltfläche in einer anderen Aktivität geklickt wird und wie Daten zwischen diesen beiden Aktivitäten übergeben werden?


Das Starten einer Aktivität aus einer anderen Aktivität ist ein sehr häufiges Szenario unter Android-Anwendungen.
Um eine Aktivität zu starten, benötigen Sie ein Objekt [Intent][1] .

Wie erstellt man Intent-Objekte?

Ein Intent-Objekt benötigt zwei Parameter in seinem Konstruktor

  1. Kontext
  2. Name der Aktivität , die gestartet werden soll

Beispiel:

Wenn Sie beispielsweise zwei Aktivitäten haben, sagen Sie HomeActivity und DetailActivity und Sie möchten DetailActivity von HomeActivity (HomeActivity -> DetailActivity) starten.

Hier ist das Code-Snippet, das zeigt, wie man DetailActivity startet

HomeAktivität.

Intent i = new Intent(HomeActivity.this,DetailActivity.class);
startActivity(i);

Und du bist fertig.

Zurück zum Knopf klicken Teil klicken.

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

});

Die Methode zum Starten neuer Aktivitäten besteht darin, eine Absicht zu senden, und 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-Entwickler-Dokumente intents , die sich auf intents beziehen; Es ist eine Fülle von Informationen zu diesem Thema und hat auch Beispiele.


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 der AndroidManifest.xml hinzuzufügen:

<activity android:label="@string/app_name" android:name="NextActivity"/>

Emmanuel,

Ich denke, die zusätzlichen Informationen sollten vor Beginn der Aktivität eingegeben werden, da die Daten sonst noch nicht verfügbar sind, wenn Sie in der onCreate-Methode von NextActivity darauf zugreifen.

Intent myIntent = new Intent(CurrentActivity.this, NextActivity.class);

myIntent.putExtra("key", value);

CurrentActivity.this.startActivity(myIntent);

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

Nimm 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"
        />

Machen Sie den Listener der Schaltfläche.

 pre.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent intent = new Intent(MainActivity.this, SecondActivity.class);
            startActivity(intent);
        }
    });

Sie können diesen Code ausprobieren:

Intent myIntent = new Intent();
FirstActivity.this.SecondActivity(myIntent);

Starten Sie eine andere Aktivität aus dieser Aktivität, und Sie können Parameter auch über das Bundle-Objekt übergeben.

Intent intent = new Intent(getBaseContext(), YourActivity.class);
intent.putExtra("USER_NAME", "[email protected]");
startActivity(intent);

Daten in einer anderen Aktivität abrufen (YourActivity)

String s = getIntent().getStringExtra("USER_NAME");

Versuchen Sie von der sendenden Aktivitä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 von 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 den folgenden Code zur Datei AndroidManifest.xml hinzu

  android:name="packagename.NameOfTheReceivingActivity"
  android:label="Title of the Activity"
  android:parentActivityName="packagename.NameOfSendingActivity"

Wenn der Benutzer auf die Schaltfläche klickt, direkt in der 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 in = new Intent(getApplicationContext(),SecondaryScreen.class);    
    startActivity(in);

    This is an explicit intent to start secondscreen activity.

Intent iinent= new Intent(Homeactivity.this,secondactivity.class);
startActivity(iinent);




android-lifecycle