【Androidプログラミング】キャッチコピー自動生成アプリを作ろう(「Intent」「putExtra」)

AndroidStudioで、「キャッチコピー自動生成アプリ」を作っていきます。

主な学習のテーマは

「Intent」(画面遷移)と
「putExtra」(情報の受け渡し)

です。

▼作業環境
OS:win10
言語:java
AndroidStudio:4.1.1

▼主な対象者
javaの入門的な構文は少しかじったので、実際何か「モノ」を作って成果を体験してみたい人

キーボードの日本語入力は別途こちらで解説

 

動画(実況解説)

 

テキスト

1)activity.main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context=".MainActivity">


    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="【キャッチコピー自動生成アプリ】" />

    <EditText
        android:id="@+id/et"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="40dp"
        android:hint="アイテムを入力してね" />

    <Button
        android:id="@+id/button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:onClick="onButton"
        android:text="自動生成" />
</LinearLayout>

 

2)MainActivity.java

package com.example.mycatchphrase;

import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {

    //5)EXTRA_MYITEMを定義
    public final static String EXTRA_MYITEM ="com.example.mycatchphrase.EXTRA_MYITEM";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }
    public void onButton(View view){
        //1)EditTextのid取得
        EditText myEdit = (EditText)findViewById(R.id.et);

        //2)idの文字を取得
        String myItem =myEdit.getText().toString();

        //3)中身を表示(orない場合はエラー処理)
        if(myItem.equals("")){
            //エラー処理
            Toast.makeText(
                    this,
                    "何か書いて",
                    Toast.LENGTH_LONG
            ).show();
        }else{
            //5)次の画面へ(4その前に次の画面を作る)
            Intent intent = new Intent(this,Result.class);
            intent.putExtra(EXTRA_MYITEM,myItem);
            startActivity(intent);

        }

    }
}

 

3)activity_result.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center"
    android:orientation="vertical"
    tools:context=".Result">

<!--4)画面作成-->
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="【新キャッチコピー】" />

    <TextView
        android:id="@+id/itemResult"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="●●です"
        android:textSize="18sp"
        android:textStyle="bold" />

    <Button
        android:id="@+id/button2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="100dp"
        android:onClick="onReplay"
        android:text="リプレイ" />

</LinearLayout>

 

4)Result.java

package com.example.mycatchphrase;

import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.TextView;

import java.util.Random;

public class Result extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_result);

        //6)intentのデータを取得
        Intent intent =getIntent();
        String myItem = intent.getStringExtra(MainActivity.EXTRA_MYITEM);

        //7)TextViewに表示
        TextView itemResult =(TextView)findViewById(R.id.itemResult);
        //itemResult.setText(myItem + "です");

        //8)配列を用意
        String [] str ={
                " 女子高生が選ぶ『" + myItem + "』ランキング",
                "100円ショップにあるものだけで『" + myItem +"』を作る",
                " 世界の富豪が実践する3つの『" + myItem + "』",
                " 逆に今『" + myItem + "』がナウい!",
                " 世界は『" + myItem + "』で出来ている",
                " 彼のハートを打ち抜く神『" + myItem + "』",
                " 衝撃!『" + myItem + "』だけで1ヵ月生活",
                " あなたの知らない『" + myItem + "』の世界",
                " 今からはじめる『" + myItem + "』",
                " 乳酸菌が100億個入った『" + myItem + "』",
                " 100年に1度の『" + myItem + "』",
                " 愛と『" + myItem + "』の物語",
                " 世界よ!これが『" + myItem + "』だ!!",
                " あの『" + myItem + "』、待望の映画化!",
                " 今年最高の『" + myItem + "』をお届け",
        };

        //10)ランダムで数字を取得
        int strNum =str.length;
        Random random = new Random();
        int ranNum =random.nextInt(strNum);

        //9)配列を表示
        //11)ランダムに表示
        itemResult.setText(str[ranNum]);

    }

    public void onReplay(View view){
        finish();
    }
}