Skip to content

Most visited

Recently visited

navigation

別の activity を開始する

前のレッスンを終了していれば、テキスト フィールドとボタンを備えた activity(1 画面)を表示するアプリができていると思います。このレッスンでは、ユーザーが [Send] ボタンをタップしたときにメッセージ表示する新しい activity を開始するためのコードを MainActivity にいくつか追加します。

注: このレッスンでは、Android Studio 2.3 以降を使用することを想定しています。

送信ボタンに応答する

以下の操作を実行して、ボタンによって呼び出されるメソッドを MainActivity.java に追加します。

  1. app > java > com.example.myfirstapp > MainActivity.java ファイルで、sendMessage() メソッドスタブを以下のように追加します。
    public class MainActivity extends AppCompatActivity {
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
        }
    
        /** Called when the user taps the Send button */
        public void sendMessage(View view) {
            // Do something in response to button
        }
    }

    メソッドの引数として使用される View クラスを Android Studio が解決できないため、エラーが表示される場合があります。その場合は、クリックしてカーソルを View 宣言に置いてから、Alt+Enter(または、Mac の場合は Option+Enter)を押してクイック修正を行います(メニューが表示された場合は、[Import class] を選択します)。

  2. ここで、activity_main.xml ファイルに戻り、ボタンからこのメソッドを呼び出します。
    1. Layout Editor でボタンをクリックして選択します。
    2. [Properties] ウィンドウで、[onClick] プロパティを見つけ、プルダウン リストから [sendMessage [MainActivity]] を選択します。

これで、ボタンをタップすると、sendMessage() メソッドが呼び出されます。

このメソッドの詳細に注意してください。これらの詳細は、システムが android:onClick 属性と互換性があることを認識するために必要です。特に、このメソッドは以下を宣言する必要があります。

次に、このメソッドをテキスト フィールドのコンテンツを読み込むように設定し、そのテキストを別の activity に送ります。

Intent を作成する

Intent は、異なるコンポーネント(2 つの activity など)の間に実行時バインディングを付与するオブジェクトです。Intent はアプリの「これを行うという意図」を表します。intent は幅広いタスクで用いることができますが、このレッスンでは、別の activity を開始するために使われます。

次に示すように、MainActivity.javaEXTRA_MESSAGE 定数と sendMessage() コードを追加します。

public class MainActivity extends AppCompatActivity {
    public static final String EXTRA_MESSAGE = "com.example.myfirstapp.MESSAGE";
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    /** Called when the user taps the Send button */
    public void sendMessage(View view) {
        Intent intent = new Intent(this, DisplayMessageActivity.class);
        EditText editText = (EditText) findViewById(R.id.editText);
        String message = editText.getText().toString();
        intent.putExtra(EXTRA_MESSAGE, message);
        startActivity(intent);
    }
}

Android Studio で [Cannot resolve symbol] エラーが再度表示されるため、Alt+Enter(または、Mac の場合は Option+Return)を押します。インポート内容は次のようになります。

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;

DisplayMessageActivity のエラーは残っていても問題ありません。次のセクションで修正できます。

sendMessage() に何が起きているかを次に説明します。

第 2 の activity を作成する

  1. [Project] ウィンドウで app フォルダを右クリックし、[New] > [Activity] > [Empty Activity] を選択します。
  2. [Configure Activity] ウィンドウの [Activity Name] に「DisplayMessageActivity」と入力し、[Finish] をクリックします(他のすべてのプロパティはデフォルトのままにします)。

Android Studio は自動的に次の 3 つの処理を実行します。

このアプリを実行して 1 つ目の activity でボタンをタップすると、2 つ目の activity が開始されますが、中身は空です。これは、2 つ目の activity が、テンプレートで提供された空のレイアウトを使用しているためです。

テキストビューを追加する

図 1 レイアウトの上部中央に配置されたテキストビュー

新しい activity には空のレイアウト ファイルが含まれているため、ここで、メッセージが表示されるテキストビューを追加します。

  1. app > res > layout > activity_display_message.xml ファイルを開きます。
  2. ツールバーの [Turn On Autoconnect] を クリックします。
  3. [Pallete] ウィンドウから [TextView] をレイアウトにドラッグして、レイアウトの上部近くの中央付近に配置し、表示される縦線にスナップしてからドロップします。Autoconnect は、ビューを水平方向の中央に配置する制約を追加します。
  4. テキストビューの上部からレイアウトの上部に対して制約をもう 1 つ適用し、図 1 のようにビューが表示されるようにします。

オプションで、[Properties] ウィンドウで [textAppearance] を展開して、[textSize] や [textColor] などの属性を変更し、テキスト スタイルを調整します。

メッセージを表示する

次に、1 つ目の activity から渡されたメッセージを表示するように、2 つ目の activity を修正します。

  1. DisplayMessageActivity.java で、次のコードを onCreate() メソッドに追加します。
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_display_message);
        
        // Get the Intent that started this activity and extract the string
        Intent intent = getIntent();
        String message = intent.getStringExtra(MainActivity.EXTRA_MESSAGE);
    
        // Capture the layout's TextView and set the string as its text
        TextView textView = (TextView) findViewById(R.id.textView);
        textView.setText(message);
    }
  2. Alt+Enter(Mac の場合は Option+Return)を押して足りないクラスをインポートします。インポート内容は次のようになります。
    import android.content.Intent;
    import android.support.v7.app.AppCompatActivity;
    import android.os.Bundle;
    import android.view.ViewGroup;
    import android.widget.TextView;
    

Up ナビゲーションを追加する

アプリのメインの入口ではない各画面(「ホーム」画面ではないすべての画面)にナビゲーションを提供して、ユーザーがアプリバーの Up ボタンをタップしてアプリ階層の論理的な親画面に戻れるようにする必要があります。

必要なことは、AndroidManifest.xml ファイルで論理的な親になる activity を宣言するだけです。そうするには、app > Manifests > AndroidManifest.xml ファイルを開き、DisplayMessageActivity<activity> タグを見つけて、次のコードに置き換えます。

<activity android:name=".DisplayMessageActivity"
          android:parentActivityName=".MainActivity" >
    <!-- The meta-data tag is required if you support API level 15 and lower -->
    <meta-data
        android:name="android.support.PARENT_ACTIVITY"
        android:value=".MainActivity" />
</activity>

これで、Android システムは Up ボタンをアプリバーに自動的に追加します。

アプリを実行する

ここで、ツールバーの [Apply Changes] をクリックしてアプリを 実行します。アプリが開いたら、テキスト フィールドにメッセージを入力して、[Send] をタップし、2 つ目の activity にメッセージが表示されることを確認します。

図 2 2 つの activity のスクリーンショット

これで最初の Android アプリの完成です。

Android アプリ開発に関する基本の学習を続けるには、下記のリンクで次のレッスンをご覧ください。

This site uses cookies to store your preferences for site-specific language and display options.

Get the latest Android developer news and tips that will help you find success on Google Play.

* Required Fields

Hooray!

Follow Google Developers on WeChat

Browse this site in ?

You requested a page in , but your language preference for this site is .

Would you like to change your language preference and browse this site in ? If you want to change your language preference later, use the language menu at the bottom of each page.

This class requires API level or higher

This doc is hidden because your selected API level for the documentation is . You can change the documentation API level with the selector above the left navigation.

For more information about specifying the API level your app requires, read Supporting Different Platform Versions.

Take a short survey?
Help us improve the Android developer experience.
(Sep 2017 survey)