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


---

104-Running Android Apps


---
104-Running Android Apps
 On Android Emulator and Android Devices

1) Continue from the previous tutorial

2) Run ADT and open My First App project

3) Check that your Android Emulator is running in the background

You may need to switch to DDMS view to check that your Android Emulator is online and detected by ADT.
The Devices Panel should display your Emulator Name and Status (Online).
If the device is not detected or is not online, you need to restart your AVD.

4) Run Android Apps In Emulator

Right-click Project Name (My First App) and select Run As/Android Application.
The status bar reports the launching status.
Select Yes to monitor Logcat.
My First App now appears in the Emulator and the LogCat window displays the log messages.

5) Run Android Apps in Real Device

5.1) Observe your Package Explorer.
5.2) Notice that an apk file has been generated and stored in the res folder.
5.3) You can copy this apk file to your Android Device and install it manually.
(I prefer to copy the file into the Download folder in my Android Device for easy search and retrieval later on).
5.4) Your Android Device may block installation and request your permission to “install from unknown source”. Allow this feature in order to proceed with installation.
Read more information here, http://developer.android.com/training/basics/firstapp/running-app.html for troubleshooting tips.
---