android new - So starten Sie eine neue Aktivität beim Klicken auf die Schaltfläche




activity onclick (15)

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?


Answers

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

Sie können diesen Code ausprobieren:

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

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

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

Obwohl bereits richtige Antworten gegeben wurden, bin ich hier, um die Antwort in der Sprache Kotlin zu suchen. Diese Frage bezieht sich nicht auf die Sprache, daher füge ich den Code hinzu, um diese Aufgabe in der Sprache Kotlin zu erledigen.

Hier ist, wie Sie dies in Kotlin für andorid tun

testActivityBtn1.setOnClickListener{
      val intent = Intent(applicationContext,MainActivity::class.java)
      startActivity(intent)

 }

Die aktuellen Antworten sind großartig, aber für Anfänger ist eine umfassendere Antwort erforderlich. Es gibt 3 verschiedene Möglichkeiten, eine neue Aktivität in Android zu starten. Alle verwenden die Intent Klasse. Absicht | Android-Entwickler .

  1. Verwenden Sie das onClick Attribut des onClick . (Anfänger)
  2. Zuweisen eines OnClickListener() über eine anonyme Klasse. (Mittlere)
  3. Activity Wide Interface-Methode mit der switch Anweisung. (Profi)

Hier ist der Link zu meinem Beispiel, wenn Sie folgen möchten: https://github.com/martinsing/ToNewActivityButtons

1. Verwenden Sie das onClick Attribut des onClick . (Anfänger)

Schaltflächen haben ein onClick Attribut, das in der XML-Datei enthalten ist:

<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 zu machen, modular, und kann leicht mehrere onClicks auf die gleiche Absicht einfach setzen.

Nachteil: Schwierige Lesbarkeit beim Überprüfen.

2. Zuweisen eines OnClickListener() über eine anonyme Klasse. (Mittlere)

Dies ist der setOnClickListener() wenn Sie für jede button einen separaten setOnClickListener() und jede onClick() mit ihrer eigenen Absicht überschreiben.

In der Java-Klasse:

@Override
protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main_activity);

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

        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 zu machen.

Nachteil: Es wird viele anonyme Klassen geben, die die Lesbarkeit bei der Überprüfung erschweren werden.

3. Activity Wide Interface-Methode mit der switch Anweisung. (Profi)

Dies ist der onClick() wenn Sie eine switch Anweisung für Ihre Schaltflächen innerhalb der onClick() -Methode verwenden, 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);

    button1 = (Button) findViewById(R.id.button1);
    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 Buttonverwaltung, da alle Button Intents in einer onClick() Methode registriert sind

Für den zweiten Teil der Frage, die Weitergabe von Daten, siehe bitte Wie gebe ich Daten zwischen Aktivitäten in Android-Anwendung?


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

});

Intent i = new Intent(firstactivity.this, secondactivity.class);
startActivity(i);

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

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

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"

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.


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.

Danke für die parzellierbare Hilfe, aber ich habe eine weitere optionale Lösung gefunden

 public class getsetclass implements Serializable {
        private int dt = 10;
    //pass any object, drwabale 
        public int getDt() {
            return dt;
        }

        public void setDt(int dt) {
            this.dt = dt;
        }
    }

In Aktivität Eins

getsetclass d = new getsetclass ();
                d.setDt(50);
                LinkedHashMap<String, Object> obj = new LinkedHashMap<String, Object>();
                obj.put("hashmapkey", d);
            Intent inew = new Intent(SgParceLableSampelActivity.this,
                    ActivityNext.class);
            Bundle b = new Bundle();
            b.putSerializable("bundleobj", obj);
            inew.putExtras(b);
            startActivity(inew);

Daten in Aktivität 2 abrufen

 try {  setContentView(R.layout.main);
            Bundle bn = new Bundle();
            bn = getIntent().getExtras();
            HashMap<String, Object> getobj = new HashMap<String, Object>();
            getobj = (HashMap<String, Object>) bn.getSerializable("bundleobj");
            getsetclass  d = (getsetclass) getobj.get("hashmapkey");
        } catch (Exception e) {
            Log.e("Err", e.getMessage());
        }




android android-intent android-activity android-button android-lifecycle