Cara membuka aktivitas kedua dengan mengklik tombol di aplikasi android

96

Saya sedang belajar membangun aplikasi Android dan saya membutuhkan bantuan khusus. Sepertinya saya tidak bisa memikirkan bagian mana dari kode template yang harus saya ubah, dan bit mana yang statis.

Di folder LAYOUT saya memiliki ACTIVITY_MAIN.XML saya yang bertuliskan

 <?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>

Selanjutnya, saya memiliki aktivitas kedua ACTIVITY_SEND_PHOTOS.XML yaitu

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

Saya kemudian memiliki MainActivity.java saya (apakah ini .class?) Ini membaca 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
 }
 }

dan kemudian file SendPhotos.java saya yaitu;

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

 }

Saya ingin tombol di aktivitas utama saya ditautkan ke aktivitas sendphotos saya, cukup buka aktivitas itu, tidak ada yang mewah, tidak mengirim data atau apa pun.

Saya tahu bahwa di suatu tempat saya membutuhkan saya

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

tapi saya tidak tahu harus mengganti ToActivity.class dengan apa atau apa lagi yang saya butuhkan di mana.

Henry Aspden
sumber
1
ToActivity.class adalah nama aktivitas kedua Anda
Niranj Patel
Ini bisa menjadi sumber terbaik untuk Anda
Usama Sadiq
Kelas maksud tidak memiliki konstruktor yang menerima dua kelas sebagai argumen !. apa yang harus saya lakukan?
Emad Aghayi

Jawaban:

156

Anda dapat pindah ke aktivitas yang diinginkan dengan mengklik tombol. tambahkan saja baris ini.

android:onClick="sendMessage"

xml:

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

Dalam aktivitas utama Anda cukup tambahkan metode ini:

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

Dan yang paling penting: jangan lupa untuk mendefinisikan aktivitas Anda dalam manifest.xml

 <activity>
      android:name=".ToActivity"
      android:label="@string/app_name">          
 </activity>
Juned
sumber
3
Anda harus menambahkan >di tag aktivitas
Mageek
2
Ini tidak berhasil untuk saya. The View, Intentdan nama aktivitas berwarna merah. Apakah saya perlu mengimpor sesuatu untuk View?
Srujan Barai
1
@SrujanBarai ya, keduanya mengimpor android.view.View; dan impor android.content.Intent; harus diimpor
William Reed
Ini bekerja dengan baik untukku. Namun bukankah dia membutuhkan setOnClickListener () pada tombolnya?
Evaggelos Manousakis
1
@VaggelisManousakis tidak ada yang tidak diperlukan karena sudah ada di xmlandroid:onClick="sendMessage"
Juned
30

Coba ini

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

 }
JD
sumber
tetapi dimana? Saya mendapatkan kesalahan di semua tempat Jika saya mencoba menempatkan ini dengan .java dalam gerhana
Henry Aspden
@HenryAspden mengimpor onclocklistener dan Tombol.
JD
@HenryAspden meletakkan kode ini setelah onCreate dan setelah menemukan id Anda.
JD
@HenryAspden saya telah mengedit kode saya sekarang coba ini. saya telah meletakkan kode ini di onCreate coba cara ini.
JD
11

Dari Aktivitas: Di mana Anda saat ini?

Ke Aktivitas: mau kemana?

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

Kedua Aktivitas harus disertakan dalam file manifes jika tidak maka tidak akan menemukan file kelas dan melempar Force close.

Edit Mainactivity.java Anda

crate button's object;

sekarang Tulis kode untuk acara klik.

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

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

Semoga berhasil untuk Anda.

Chintan Khetiya
sumber
apakah ini masuk ke dalam layout atau .java?
Henry Aspden
ok Anda dapat meletakkan kode ini di acara klik tombol di file activity.java utama
Chintan Khetiya
11
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);       
    }  
});

Jawaban noob lengkap dari noob lengkap: MainActivityadalah nama aktivitas pertama. MainActivity2adalah nama aktivitas kedua. button1adalah ID tombol dalam xml untuk MainActivityAktivitas.

iAmNotVeryGoodAtThis
sumber
1
hanya untuk membantu orang lain ... dengan "nama tombol", apakah Anda mengacu pada ID?
Henry Aspden
Memang . Dikoreksi untuk mencerminkan
rekomendasi
5

cukup ikuti langkah ini (saya tidak menulis kode hanya karena Anda dapat melakukan salin dan tempel dan tidak bisa belajar) ..

  1. pertama-tama Anda perlu mendeklarasikan tombol yang Anda miliki di layout

  2. Berikan referensi ke tombol itu dengan menemukan id-nya (menggunakan findviewById) di oncreate

  3. tombol setlistener untuk (seperti pendengar setonclick)

  4. terakhir menangani event click (artinya memulai aktivitas baru dengan menggunakan maksud seperti yang sudah Anda ketahui)

  5. Jangan lupa untuk menambahkan aktivitas dalam file manifes

BTW ini hanya sederhana saya ingin menyarankan Anda bahwa mulai dari tutorial sederhana yang tersedia di internet akan lebih baik untuk Anda ..

Semoga berhasil untuk Android

Kalpesh Lakhani
sumber
3

Ganti kode baris di bawah ini:

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

Tambahkan baris di bawah ini dalam file manifes Anda:

   <activity android:name="com.packagename.FromActivity"></activity>
   <activity android:name="com.packagename.ToActivity"></activity>
Avadhani Y
sumber
3

Ganti MainActivity.class Anda dengan kode ini

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

Tambahkan Kode ini di AndroidManifest.xml After </activity>dan Before</application>

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

Ini selalu berhasil, salah satunya akan baik-baik saja:

@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);
        }
    }
}
Tobi Akerele
sumber
2

tambahkan kode di bawah ini ke file activity_main.xml:

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

dan tambahkan saja metode di bawah ini ke file MainActivity.java:

public void buttonClick(View view){
  Intent i = new Intent(getApplicationContext()SendPhotos.class);
  startActivity(i);
}
Md Nakibul Hassan
sumber
Anda memiliki kesalahan ketik, tanda tanya sebelum nama file
Mathieu VIALES
Maaf atas kesalahannya
Md Nakibul Hassan
1

Jika Anda memiliki dua tombol dan memiliki panggilan id yang sama ke acara klik tombol Anda seperti ini:

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

        }
    });

Saat Anda mengklik button1, button2akan berfungsi dan Anda tidak dapat membuka aktivitas kedua.

Serdar Günaydın
sumber
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" />

DALAM KODE JAWA

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

}

Rana Umerfarooq
sumber
1

Anda dapat pindah ke aktivitas yang diinginkan dengan mengklik tombol. cukup tambahkan
android: onClick = "timerApp" baris ini.

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

Dalam aktivitas utama Anda cukup tambahkan metode ini:

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

ATAU dalam metode onCreate () tambahkan kode di bawah ini

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);       
    }  
});
Sani Kamal
sumber