Friday, November 7, 2014

106-Creating Second Activity


---
106-Creating Second Activity
In this lesson, you’ll add some code to MainActivitythat starts a new activity when the user clicks the Send button.

1) Run ADT and open My First App project

2) Add a Java Method Call to Send Button

To respond to the button's on-click event, add the android:onClick attribute to the <Button> element in the layout file.

<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"
    tools:context=".MainActivity" >
    <EditText
         android:layout_weight="1"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:hint="@string/edit_message" />
    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/button_send"
        android:onClick="sendMessage" />
</LinearLayout>

3) Add a Java Method to MainActivity Class


package com.example.myfirstapp;
import android.os.Bundle;
import android.app.Activity;
import android.util.Log;
import android.view.Menu;
import android.view.View;
public class MainActivity extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        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
        Log.v("Click","Send Button is clicked");
    } 
}

You need to import the following classes…
import android.util.Log;
import android.view.View;

4) Run and Observe LogCat Window

5) Create a Second Activity

5.1) Go to menu. Select File/New/Other… (since Android Activity is not listed in menu)
5.2) In the New Dialog Window, Select Android/Android Activity.
5.3) Choose Blank Activity
5.4) Type the name DisplayMessageActivity
Click Finish.

6) Pass the control from MainActivity to SecondActivity

Edit MainActivity by adding an Intent Object and a method call “startActivity”.

package com.example.myfirstapp;
import android.os.Bundle;
import android.app.Activity;
import android.util.Log;
import android.view.Menu;
import android.view.View;
public class MainActivity extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        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
        Log.v("Click","Send Button is clicked");
        Intent intent = new Intent(this, DisplayMessageActivity.class);
        startActivity(intent);
    }
}

You need to import the following classes…
import android.content.Intent;

7) Capture string input and pass to Second Activity

7.1) Give an id to the EditText object
edit the layout by giving the id property to EditText.

<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"
    tools:context=".MainActivity" >
    <EditText
        android:id="@+id/edit_message"
        android:layout_weight="1"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:hint="@string/edit_message" />
    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/button_send"
        android:onClick="sendMessage" />
</LinearLayout>
7.2) Update the MainActivity Class to capture input and pass to intent object.

package com.example.myfirstapp;
import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.util.Log;
import android.view.Menu;
import android.view.View;
public class MainActivity extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        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
        Log.v("Click","Send Button is clicked");
        Intent intent = new Intent(this, DisplayMessageActivity.class);
        EditText editText = (EditText) findViewById(R.id.edit_message);
        String message = editText.getText().toString();
        intent.putExtra(EXTRA_MESSAGE, message);      
        startActivity(intent);
    }
}

You need to
1) import android.widget.EditText;
2) Add a public final static String variable
        public final static String EXTRA_MESSAGE = "com.example.myfirstapp.MESSAGE";
example:
public=it is accessible from outside of class
final=it cannot be changed
static=it will be created once and therefore doesn’t require instantiation

8) Update DisplayMessageActivity Class


package com.example.myfirstapp;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
public class DisplayMessageActivity extends Activity {
        @Override
        protected void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.activity_display_message);
             // Get the message from the intent
             Intent intent = getIntent();
             String message = intent.getStringExtra(MainActivity.EXTRA_MESSAGE);
             // Create the text view
             TextView textView = new TextView(this);
             textView.setTextSize(40);
             textView.setText(message);
             // Set the text view as the activity layout
             setContentView(textView);
        }
        @Override
        public boolean onCreateOptionsMenu(Menu menu) {
                // Inflate the menu; this adds items to the action bar if it is present.
                getMenuInflater().inflate(R.menu.activity_display_message, menu);
                return true;
        }
}

You need to
1) import android.content.Intent;
2) import android.widget.TextView;
9) Run
---

105-Building Android Simple User Interface


---