195

In my Android application, I have two activity classes. I have a button on the first one and I want to show the second when it is clicked, but I get an error. Here are the classes:

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

The second class that should show when the button is clicked, but never does:

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

How do I create a button that will show the second activity?

3
  • Do you get an error when you compile or run time? In either case, what is the error? Commented Apr 10, 2009 at 3:12
  • 3
    This was a run time error. The emulator gave the generic "the application has stopped unexpectedly" error, but using the debugger, it showed a "android.content.ActivityNotFoundException: Unable to find explicit activity class {class name} have you declared this activity in your AndroidManifest.xml? Commented Apr 10, 2009 at 15:24
  • 8
    It is a very common bug that people forget to add their activity into Manifest.xml but there should be way to enter it automatically. Commented Nov 24, 2010 at 10:26

11 Answers 11

177

The issue was the OrderScreen Activity wasn't added to the AndroidManifest.xml. Once I added that as an application node, it worked properly.

<activity android:name=".OrderScreen" /> 
Sign up to request clarification or add additional context in comments.

2 Comments

Can you explain why this is needed?
@LouisRhys all activities need to be declared in the manifest file. See Description section here: developer.android.com/guide/topics/manifest/…
162

Add this line to your AndroidManifest.xml:

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

2 Comments

Why did people upvote this answer from months later?
@Jaykul see the edit from 2013 in the accepted answer
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 Comment

You may want to explain your answer for the benefit of the OP
4

Use this code:

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

context: refer to current activity context,

please make sure that you have added activity in android manifest file.

Following code for adding activity in android manifest file

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

1 Comment

java.lang.IllegalStateException: Fragment GetUserNumber{536bc00c} not attached to Activity.
4
<activity android:name="[packagename optional].ActivityClassName"></activity> 

Simply adding the activity which we want to switch to should be placed in the manifest file

Comments

3

When you create any activity in android file you have to specify it in 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> 

Comments

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

2 Comments

Add SecondActivity class in your menifest file.
The method setOnClickListener(View.OnClickListener) in the type View is not applicable for the arguments (new OnClickListener(){})?
2

add the activity in your manifest file

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

Comments

2

In the Manifest

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

In the Java Code where you have to place intent code

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

1 Comment

You are missing one closing bracket in startActivity It should be like this: startActivity(new Intent(CurrentActivity.this, OrderScreen.class));
1

you can use the context of the view that did the calling. Example:

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

1 Comment

The method getContext() is undefined for the type MainActivity?
1
Intent i = new Intent("com.Android.SubActivity"); startActivity(i); 

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.