Friday, June 8, 2012

Using Intent in an Android application to show another activity


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?


Source: Tips4all

6 comments:

  1. Add this line to your AndroidManifest.xml:

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

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

    ReplyDelete
  3. 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);
    }

    });

    ReplyDelete
  4. add your OrderScreen activity in manifest.file

    ReplyDelete
  5. ----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>

    ReplyDelete
  6. 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>

    ReplyDelete