it-swarm.com.de

So öffnen Sie eine zweite Aktivität auf Knopfdruck in der Android-App

Ich lerne, Android-Anwendungen zu entwickeln, und brauche spezielle Hilfe. Ich scheine nicht zu verstehen, welche Bits des Vorlagencodes ich ändern muss und welche Bits statisch sind.

Im LAYOUT Ordner habe ich meine ACTIVITY_MAIN.XML, die liest

 <?xml version="1.0" encoding="utf-8"?>
 <LinearLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
 xmlns:tools="http://schemas.Android.com/tools"
 Android:layout_width="match_parent"
 Android:layout_height="match_parent"
 Android:orientation="horizontal">

 <Button
    Android:id="@+id/button1"
    Android:layout_width="match_parent"
    Android:layout_height="wrap_content"
    Android:text="@string/main_buttons_photos" />

 </LinearLayout>

Als nächstes habe ich meine zweite Aktivität ACTIVITY_SEND_PHOTOS.XML, die ist

 <RelativeLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
 xmlns:tools="http://schemas.Android.com/tools"
 Android:layout_width="match_parent"
 Android:layout_height="match_parent" >

 <TextView
    Android:id="@+id/textView2"
    Android:layout_width="wrap_content"
    Android:layout_height="wrap_content"
    Android:layout_centerHorizontal="true"
    Android:layout_centerVertical="true"
    Android:text="@string/hello_world"
    tools:context=".SendPhotos" />

 <TextView
    Android:id="@+id/textView1"
    Android:layout_width="wrap_content"
    Android:layout_height="wrap_content"
    Android:layout_alignParentLeft="true"
    Android:layout_alignParentTop="true"
    Android:text="@string/title_activity_send_photos"
    Android:textAppearance="?android:attr/textAppearanceLarge" />

 </RelativeLayout>

Ich habe dann meine MainActivity.Java (ist dies die .class?). Dies liest Paket com.example.assent.bc;

 import Android.os.Bundle;
 import Android.app.Activity;
 import Android.view.Menu;
 import Android.view.View;

 public class MainActivity extends Activity {

 @Override
 public void onCreate(Bundle savedInstanceState) {
     super.onCreate(savedInstanceState);
     setContentView(R.layout.activity_main);
 }

 @Override
 public boolean onCreateOptionsMenu(Menu menu) {
     getMenuInflater().inflate(R.menu.activity_main, menu);
     return true;
 }
 /** Called when the user clicks the Send button */
 public void sendMessage(View view) {
     // Do something in response to button
 }
 }

und dann meine SendPhotos.Java -Datei;

 package com.example.assent.bc;

 import Android.os.Bundle;
 import Android.app.Activity;
 import Android.view.Menu;
 import Android.view.MenuItem;
 import Android.support.v4.app.NavUtils;

 public class SendPhotos extends Activity {

 @Override
 public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_send_photos);
    getActionBar().setDisplayHomeAsUpEnabled(true);
 }

 @Override
 public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.activity_send_photos, menu);
    return true;
 }


 @Override
 public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
        case Android.R.id.home:
            NavUtils.navigateUpFromSameTask(this);
            return true;
    }
    return super.onOptionsItemSelected(item);
 }

 }

Ich möchte, dass die Schaltfläche in meiner Hauptaktivität eine Verbindung zu meiner sendphotos-Aktivität herstellt, indem einfach diese Aktivität geöffnet wird, nichts Besonderes, keine Daten oder irgendetwas zu senden.

Ich weiß, dass ich irgendwo meine brauche 

 Intent i = new Intent(FromActivity.this, ToActivity.class);
 startActivity(i);

ich habe jedoch keine Ahnung, was mit ToActivity.class ersetzt werden soll oder was ich sonst wo brauche.

79
Henry Aspden

Sie können durch Klicken auf die Schaltfläche zur gewünschten Aktivität wechseln. Fügen Sie einfach Android:onClick="sendMessage"diese Zeile hinzu.

xml:

 <Button
        Android:id="@+id/button1"
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        Android:onClick="sendMessage"
        Android:text="@string/button" />

Fügen Sie in Ihrer Hauptaktivität einfach diese Methode hinzu:

public void sendMessage(View view) 
{
    Intent intent = new Intent(FromActivity.this, ToActivity.class);
    startActivity(intent);
}

Und das Wichtigste: Vergessen Sie nicht, Ihre Aktivität in manifest.xml zu definieren.

 <activity
      Android:name=".ToActivity"
      Android:label="@string/app_name">          
 </activity>
133
Juned

Versuche dies

  Button button;

public void onCreate(Bundle savedInstanceState) {
     super.onCreate(savedInstanceState);
     setContentView(R.layout.activity_main);

button=(Button)findViewById(R.id.button1);
        button.setOnClickListener(new View.OnClickListener() {

                    @Override
                    public void onClick(View v) {
                        // TODO Auto-generated method stub
                        Intent i = new Intent(getApplicationContext(),SendPhotos.class);
                        startActivity(i);
                    }
                });

 }
29
J.D.

Von Aktivität: Wo bist du gerade?

Zu Tätigkeit: wohin Sie gehen möchten?

Intent i = new Intent( MainActivity.this, SendPhotos.class); startActivity(i); 

Beide Aktivitäten müssen in der Manifestdatei enthalten sein. Andernfalls wird die Klassendatei nicht gefunden und Force Close wird ausgelöst.

Bearbeiten Sie Ihre Mainactivity.Java 

crate button's object;

jetzt Code für Klickereignis schreiben.

        Button btn = (button)findViewById(R.id.button1);
         btn.LoginButton.setOnClickListener(new View.OnClickListener() 
       {

                @Override
                public void onClick(View v) 
                {
                 //put your intent code here
                }
   });

Ich hoffe es funktioniert für Sie.

10
Chintan Khetiya
Button btn = (Button) findViewById(R.id.button1);

btn.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        Intent myIntent = new Intent(MainActivity.this, MainActivity2.class);
        MainActivity.this.startActivity(myIntent);       
    }  
});

Die Antwort für den vollständigen Noob aus einem vollständigen Noob: MainActivity ist der Name der ersten Aktivität MainActivity2 ist der Name der zweiten Aktivität .button1 ist die ID der Schaltfläche in xml für MainActivity Activity .

folgen Sie einfach diesem Schritt (ich schreibe keinen Code, nur Bcoz können Sie kopieren und einfügen und können nicht lernen).

  1. zuerst müssen Sie einen Button deklarieren, den Sie im Layout haben

  2. Geben Sie einen Verweis auf diese Schaltfläche an, indem Sie ihre ID (mit findviewById) in oncreate ermitteln 

  3. setlistener für Schaltfläche (wie Setonclick Listener)

  4. letzte Bearbeitung des Klickereignisses (bedeutet, dass Sie eine neue Aktivität mit der bereits bekannten Absicht beginnen).

  5. Vergessen Sie nicht, die Aktivität in der Manifestdatei hinzuzufügen

Übrigens, das ist ganz einfach. Ich möchte Ihnen vorschlagen, dass Sie nur mit einfachen Tutorials beginnen.

Viel Glück für Android 

4
Kalpesh Lakhani

Ersetzen Sie den folgenden Zeilencode:

import Android.view.View.OnClickListener;
public class MainActivity extends Activity implements OnClickListener{
   Button button;
    @Override
     public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        button=(Button)findViewById(R.id.button1);
        button.setOnClickListener(this);
      }
       public void onClick(View v) {
        if(v.getId==R.id.button1){
      Intent i = new Intent(FromActivity.this, ToActivity.class);
               startActivity(i);
            }
        }
     }

Fügen Sie die folgenden Zeilen in Ihre Manifestdatei ein:

   <activity Android:name="com.packagename.FromActivity"></activity>
   <activity Android:name="com.packagename.ToActivity"></activity>
2
Avadhani Y

Ersetze deine MainActivity.class durch diesen Code

public class MainActivity extends Activity {

Button b1;
@Override
public void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 setContentView(R.layout.activity_main);
 b1=(Button)findViewById(R.id.button1);
 b1.setOnClickListener(new View.onClickListener()
 {
  public void onClick(View v)
   {
       Intent i=new Intent(getApplicationContext(),SendPhotos.class);
       startActivity(i);
    }
 }
 )
}

Füge diesen Code in deinen AndroidManifest.xml nach dem </activity> und vor dem </application> ein

<activity Android:name=".SendPhotos"></activity>
2
Vikalp Patel

Das funktioniert immer, entweder sollte es gut gehen:

@Override
public void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);

    setContentView(R.layout.activity_main);

    Button btn = (Button) findViewById(R.id.button1);
    btn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick (View v) {
            startActivity(new Intent("com.tobidae.Activity1"));
        }
        //** OR you can just use the one down here instead, both work either way
        @Override
        public void onClick (View v){
            Intent i = new Intent(getApplicationContext(), ChemistryActivity.class);
            startActivity(i);
        }
    }
}
1
Tobidae

fügen Sie den folgenden Code zur Datei "activity_main.xml" hinzu:

<Button
        Android:id="@+id/button1"
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        Android:onClick="buttonClick"
        Android:text="@string/button" />

und fügen Sie einfach die untenstehende Methode zur MainActivity.Java-Datei hinzu:

public void buttonClick(View view){
  Intent i = new Intent(getApplicationContext()SendPhotos.class);
  startActivity(i);
}
1
 <Button
            Android:id="@+id/btnSignIn"
            Android:layout_width="250dp"
            Android:layout_height="40dp"
            Android:layout_marginEnd="8dp"
            Android:layout_marginLeft="8dp"
            Android:layout_marginRight="8dp"
            Android:layout_marginStart="8dp"
            Android:layout_marginTop="16dp"
            Android:background="@drawable/circal"
            Android:text="Sign in"
            Android:textColor="@color/white"
            app:layout_constraintLeft_toLeftOf="parent"
            app:layout_constraintRight_toRightOf="parent"
            app:layout_constraintTop_toBottomOf="@+id/etPasswordLogin" />

IN Java-Code

Button signIn= (Button) findViewById(R.id.btnSignIn);

signIn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                startActivity(new Intent(SignInPage.this,MainActivity.class));
            }
        });

}

0
Rana Umerfarooq

Wenn Sie über zwei Schaltflächen verfügen und dieselbe Schaltfläche mit der gleichen ID verwenden, klicken Sie auf Ereignisse wie folgt:

Button btn1;
Button btn2;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    btn1= (Button)findViewById(R.id.button1);

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

    btn2=(Button) findViewById(R.id.button1);//Have same id call previous button---> button1

    btn2.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

        }
    });

Wenn Sie auf button1 geklickt haben, funktioniert button2 und Sie können Ihre zweite Aktivität nicht öffnen.

0

Sie können durch Klicken auf die Schaltfläche zur gewünschten Aktivität wechseln. einfach hinzufügen
Android: onClick = "timerApp" diese Zeile.

xml:

 <Button
        Android:id="@+id/timer_app"
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        Android:onClick="timerApp"
        Android:text="Click To run Timer Activity" />

In your main activity just add this method:

 public void timerApp(View view){
        Intent intent= new Intent(MainActivity.this,TimerActivity.class);
        startActivity(intent);
    }

ODER in der onCreate () -Methode den folgenden Code hinzufügen

Button btn =findViewById(R.id.timer_app);//Don't need to type casting in Android studio 3

btn.setOnClickListener(new View.OnClickListener() {
    public void onClick(View v) {
        Intent intent = new Intent(MainActivity.this, TimerActivity.class);
        startActivity(intent);       
    }  
});
0
Sani Kamal