
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();
}
}


