Menggunakan Intent di aplikasi Android untuk menampilkan aktivitas lain


196

Dalam aplikasi Android saya, saya memiliki dua kelas aktivitas. Saya memiliki tombol pada yang pertama dan saya ingin menunjukkan yang kedua ketika diklik, tetapi saya mendapatkan kesalahan. Berikut kelas-kelasnya:

public class FirstActivity extends Activity {

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

    Button orderButton = (Button)findViewById(R.id.order);

    orderButton.setOnClickListener(new View.OnClickListener() {

      @Override
      public void onClick(View view) {
        Intent intent = new Intent(FirstActivity.this, OrderScreen.class);
        startActivity(intent);
      }

    });
  }
}

Kelas kedua yang harus ditampilkan ketika tombol diklik, tetapi tidak pernah:

public class OrderScreen extends Activity {

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

    Button orderButton = (Button) findViewById(R.id.end);

    orderButton.setOnClickListener(new View.OnClickListener() {

      @Override
      public void onClick(View view) {
        finish();
      }

    });
  }
}

Bagaimana cara membuat tombol yang akan menampilkan aktivitas kedua?


Apakah Anda mendapatkan kesalahan saat Anda mengkompilasi atau menjalankan waktu? Dalam kedua kasus, apa kesalahannya?
Quintin Robinson

3
Ini adalah kesalahan waktu berjalan. Emulator memberikan kesalahan umum "aplikasi telah berhenti tiba-tiba", tetapi menggunakan debugger, itu menunjukkan "android.content.ActivityNotFoundException: Tidak dapat menemukan kelas aktivitas eksplisit {nama kelas} sudahkah Anda mendeklarasikan aktivitas ini di AndroidManifest.xml?
Tai Squared

8
Ini adalah bug yang sangat umum yang orang lupa untuk menambahkan aktivitas mereka ke Manifest.xml tetapi harus ada cara untuk memasukkannya secara otomatis.
AZ_

Jawaban:



161

Tambahkan baris ini ke AndroidManifest.xml Anda:

<activity android:name=".OrderScreen" /> 

7
Mengapa orang membatalkan jawaban ini dari beberapa bulan kemudian?
Jaykul

4
@Jaykul melihat hasil edit dari 2013 dalam jawaban yang diterima
pomber

16

---- FirstActivity.java -----

    package com.mindscripts.eid;
    import android.app.Activity;
    import android.content.Intent;
    import android.os.Bundle;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.widget.Button;

public class FirstActivity extends Activity {

protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    Button orderButton = (Button) findViewById(R.id.order);
    orderButton.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            Intent intent = new Intent(FirstActivity.this,OrderScreen.class);
            startActivity(intent);
        }
    });

 }
}

--- OrderScreen.java ---

    package com.mindscripts.eid;

    import android.app.Activity;
    import android.os.Bundle;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.widget.Button;



    public class OrderScreen extends Activity {
@Override



protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.second_class);
    Button orderButton = (Button) findViewById(R.id.end);
    orderButton.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            finish();
        }
    });

 }
}

--- AndroidManifest.xml ----

    <?xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
  package="com.mindscripts.eid"
  android:versionCode="1"
  android:versionName="1.0">


<application android:icon="@drawable/icon" android:label="@string/app_name">
    <activity android:name=".FirstActivity"
              android:label="@string/app_name">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <activity android:name=".OrderScreen"></activity>
</application>


1
Anda mungkin ingin menjelaskan jawaban Anda untuk kepentingan OP
Luca

4

Gunakan kode ini:

Intent intent=new Intent(context,SecondActivty.class);
startActivity(intent);
finish();

konteks: merujuk ke konteks aktivitas saat ini,

pastikan Anda telah menambahkan aktivitas dalam file manifes android.

Kode berikut untuk menambahkan aktivitas dalam file manifes android

<Activity name=".SecondActivity">
</Activity>

java.lang.IllegalStateException: Fragmen GetUserNumber {536bc00c} tidak dilampirkan ke Activity.
Iman Marashi

4
<activity android:name="[packagename optional].ActivityClassName"></activity>

Cukup menambahkan aktivitas yang ingin kita alihkan harus ditempatkan dalam file manifes


3

Saat Anda membuat aktivitas apa pun di file android, Anda harus menentukannya di AndroidManifest.xml like

<uses-sdk android:minSdkVersion="8" />

<application
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name" >
    <activity
        android:name=".MyCreativityActivity"
        android:label="@string/app_name" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>


     <activity android:name=".OrderScreen"></activity>


</application>


3
b1 = (Button) findViewById(R.id.click_me);
        b1.setOnClickListener(new OnClickListener() {

            public void onClick(View v) {

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

            }
        });

Tambahkan kelas SecondActivity di file menifest Anda.
Hiren Patel

Metode setOnClickListener (View.OnClickListener) dalam tipe View tidak berlaku untuk argumen (OnClickListener baru () {})?

2

tambahkan aktivitas di file manifes Anda

<activity android:name=".OrderScreen" />

2

Dalam Manifest

<activity android:name=".OrderScreen" />

Di Kode Java tempat Anda harus meletakkan kode maksud

startActivity(new Intent(CurrentActivity.this, OrderScreen.class);

1
Anda kehilangan satu braket penutup di startActivityIni harus seperti ini:startActivity(new Intent(CurrentActivity.this, OrderScreen.class));
Strange

1

Anda dapat menggunakan konteks tampilan yang melakukan panggilan. Contoh:

Button orderButton = (Button)findViewById(R.id.order);

orderButton.setOnClickListener(new View.OnClickListener() {

  @Override
  public void onClick(View view) {
    Intent intent = new Intent(/*FirstActivity.this*/ view.getContext(), OrderScreen.class);
    startActivity(intent);
  }

});

Metode getContext () tidak terdefinisi untuk tipe MainActivity?

1
Intent i = new Intent("com.Android.SubActivity");
startActivity(i);
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.