2017年の振り返り
これはICT Advent Calendar 2017の27日目の記事です。
みなさんこんにちは、mitoです。
寒いですね。年齢を重ねていく度に寒さを感じるようになっている気がします。
いつの間にか学年的には高校生最後の年度ももう少しで終わりです。
とある事情で26日の夜中から急にバタバタしてほとんど寝れていないのでこの記事が27日中に公開されていたらいいな。
昨日(12月26日)の担当はkurokojiでした。
振り返り
今年あった・やった・なったこと
Android開発を教えながらのりょーこん作成
1~2人に聞かれた学校の勉強を教えるのはだいぶ慣れていてできるのですが、今回のような複数人相手に講義っぽく教えたり実装する機能を割り振ったりするのは慣れていなくほとんど行き当たりばったりになってしまったと思うので、参加していた13thには迷惑をかけていたかもしれません(今思えば結局ほとんど何も教えていなかった気がする)
一番基礎的なことを教えていなかった気がする...本当にごめん...
このりょーこん作成は確か1月2月くらいから始めて大会の活動が本格化し始める4月5月くらいまで続けていたと思います。
そこで一旦終了になり、統合・テスト・修正のmitoの作業が始まりました。
PCKの開発の良い息抜きになりました。
このりょーこんシステムは、実際に12月5〜8日に行われた研修旅行にて、「けんしゅうりょーこん」として試運転しました。
前日に変更しないといけないところが発覚したリ、ビーコンの数が足りてなかったりと色々なトラブルがありましたが、ちゃんと動いて点呼を取ることができていたので感動的でした。
mitoのgithubにてリポジトリがpublicになっていると思いますので興味ある方は見てみてください。
PCK
今年のPCKにはちょこちっぷマフィンとしておたすけじゅーるを持って行きました。
結果は去年同様、ベストデザイン賞でした。
アプリのUIのほとんどを自分が考えて実装したので褒められた時は嬉しかったです。(一番良いと言われていたところはIG先輩案のとこでしたけど)
仕様や画面デザインを確定させきれていない状態でタスクふりをして開発を始めてしまったため、結局びーまかが作成した1画面を丸々変更することになってしまいました。本当に申し訳なかったです。
詳細は前回の記事 にありますのでそちらを見ていただけると幸いです。
学生寮の保安委員長
これね、なんでやろうと思ったのか今の自分もわからない。
来年度から寮外生になるのですが、これ関連が理由の半分くらいを占めてます。
もちろん全男子寮生が当てはまるとは言いませんが、なんで自分が冷蔵庫に入れたものにくらい名前も書けないんですか。小学生よりひどい。
冷蔵庫内の物品を回収する前に毎回放送しているのに確認もしないんですか。放送やメールの連絡はちゃんと見て聞いて。
本当にお願いします。このままだともっとどんどんひどくなり、最悪全フロアの補食室閉鎖なんてこともあり得ますよ。(実際に可能)
それと次年度の委員長が決まらないんですか、誰か...
やりたくない気持ちはまあわかるけど,,,
ICT委員会副委員長
多分、去年の今頃くらいに副委員長になった気がします。
副委員長になったことによって2年の頃までは自分やチームがやっていることしか気にしていなかったけど、ICT委員会全体に関することも考えないといけなくなり、良い経験になったと思います。
副委員長の仕事を1年間できてとても良かったです。来年以降の委員長副委員長にも頑張って欲しいです。委員会の各位は委員長に負担をかけすぎないように各自しっかりしてください。
ちょこちっぷマフィンのリーダー
前回の記事 にも書いたのですが、リーダー・メインプログラマー・UIデザイナーの兼任は自分がリーダーとUIデザインの初心者だったからというのもあるとは思いますが大変でした。
どちらかに注力していると他のところでまだ?と催促され、全部を同時並行でできるほど経験や実力があるわけでもなくクオリティが残念なことになってしまう。
お前のやり方が悪いと言われるかもしれませんが難しかったです。でも、ちゃんと動くアプリを本選に持っていけ、受賞もできたので良かったです。
話がだいぶ変わるのですが、企画書を書いている頃か開発始まった頃くらいまで、チーム名は「ちょこちっぷまふぃん」と全部平仮名だと思っていました。
みとった〜開発
これの開発を始めた頃がいつだったのかは覚えていないんですが、今年の話とさせていただきます。
作り始めた理由が公式クライアントアプリで使いづらいところがあった、Androidアプリ開発の勉強が主な理由だったと思います。
もう基本的な機能は作り終え、あとは画面デザイン検討だったり、細々とした調整だけなので早くplayストアに公開したいと思っています。
公開するために、アイコン作成と名前を決めないといけない(みとった〜は音だけ聴くと色々不味い)けど全然進みそうにないです。
ビジコン
今年も去年同様、PCKで発表したアプリにビジネスプランをくっつけ提出しました。年明けにもビジコンがありそこにも出します。(最後のビジコンになりそう)
うちな〜ICTの方ではフロム理事長賞をいただきました。(去年と同じ)
某企業の某と某バイトの面接
今年の後期中間テストの頃から研修旅行前後に某企業の某と某バイトの面接や試験がありました。
先に結果をいうと両方とも合格?採用?されました。👏
春休みにしばらく東京に行ってきます。
これまで面接で合格したことがあるのが英検の面接しかな句く、そのほかの推薦入試や指導寮生の面接とかは落ちていたのでとても心配していましたがなんとかなりました。
良かったです。
またとない機会ですので両方とも頑張りたいです。
まとめ
今年も色々なことに参加・経験することができました。来年には進路の話も本格的になっていき考えないといけないことも増えそうな気もしますが、体調を気にしながら無理せず無理したいと思います。
皆さんも今年できなかったことややりたいことに来年はもっと挑戦していきましょう。
ここまで長い駄文になってしまいましたがお付き合いいただきありがとうございました。
良いお年を!
明日のAdvent Calendar担当は、がちゃみんです
mito.
PCKの反省記事はAdventCalendarに書こうか別記事にしようか悩む(PCKの反省記事です)
11月2日~5日にみんなが高専祭の準備や高専祭を楽しんでいる間、福島県会津に行ってPCKモバイル部門に「ちょこちっぷマフィン」として参加してきました。
PCKには2年連続での参加でした。
今年のPCKは記念大会ということもありプログラミング部門もモバイル部門も本戦出場チームが多かったです。(一枚の絵部門は知りません。ごめんなさい)
結果はベストデザイン賞でした。
(2年連続...ペンタブ2枚目......)
アプリ開発のために意見や話をしてくれた先輩、アイコンやロゴを作成してくれたるいコ、プレゼンやパンフ、ポスターの協力をしてくれたりし、副委員長パイセン、みずきち先輩、やがみあん先輩、何から何までお世話になったM教授、そしてチームメンバーの眠人とびーまかのおかげです。
本当にありがとうございました。
僕がPCKに参加することはもうないと思うので今の1,2年生やまたその次にグランプリは期待したいです。
チームでの役割
うん、流石に辛いものがあった(わっさん先輩とかすごすぎる...)
感想
良かったところ
- KotlinとAndroidに対する理解が深まった
- 見易さや理解しやすさを意識しながらコーディングできた
- ライブラリの便利さがわかった
- 新しいライブラリや書き方に挑戦できた
- ゲドさんやふなちさんと喋れた
- 温泉最高
- UIを褒められた
- 2年連続受賞できた
悪かったところ
- リーダー・メインプログラマー・デザイナー兼任は厳しい
- ポスター・パンフ・プレゼンの完成がかなりギリギリ(というかアウト)
- 教授に見せるのがだいぶ遅かった
- びーまかをプレゼンの準備に送り出すのが遅かった
他にも色々ある気がするけど今思いつくのはこれくらいなので以上で締めさせていただきます。
来年はプロコンに挑戦すると思います。
あと、Androidアプリケーション開発に興味持っている人を引きずり込みたいです。
関係ないけど、最近このブログのPVが増えて嬉しいです。
mito.
KotlinとJavaのソースファイルが混じっているAndroidプロジェクトを複数人で開発する時の注意
某コンテストに参加しており、1人はJavaでもう1人はKotlinで、コンテストに出すAndroidアプリを開発していて、その時に片方ではエラーと出て片方では何も出ていなくて2人ともビルドや実行はできるという状況に陥ったけど解決した話。
# 開発環境
Windows 10
Mac OSX Sierra
AndroidStudio 2.3.3
Java8
Kotlin 1.1.50
# 状況
- gitでバージョン管理をしていて、Kotlinで書いている人(以下K)とJavaで書いている人(以下J)がdevelopから生やしたブランチでそれぞれ作業をしており、Kがmergeした後のdevelopブランチにJがmergeした後に急に出てきたらしい(当人ではないので詳しくは分からず)。
- KとJはそれぞれ別フォルダにそれぞれの言語のコードを保存していました。(main.java.srcDirs += 'src/main/kotlin')
- AndroidStudioに「cannot resolve symbol」と言われ赤波線を引かれてエラー扱い。
- ビルドや実行はでき、「Message」ではエラーと出ない。
- ビルドや実行はできるがエラー表示され、他のエラーに気づけなくなる可能性があるためどうにかしたい。
- Kの方ではエラー出されていない。
- エラーが吐かれたファイルはMainActivity.java。
- エラーが吐かれた部分は全部、Kotlinで作成したクラスのインスタンス化だったり宣言をしているところ。
- Kotlinが入っているフォルダをAndroidStudioが見つけられていないっぽい...?
# 解決方法
ここまで読んできて、詳しい人なら気付いていると思いますが、
J側のAndroidStudioにKotlinのプラグインをインストールしたら解決しました。
これでAndroidStudioが.ktファイルを認識するようになったみたい。
そのあとは同じ状況にならずに済んでいる。
# 感想
エラーというか要注意扱いなのかと考えたけど「cannot resolve symbol」と言われたらね...
当然と言われればそうかもしれないけど、全く考慮できていなかった。
最初、全部Javaに書き直そうかと思って、少しJavaで書き直したところでめんどくさくなって解決方法を考えてみたけど成功してよかった。
今の所、これ以外でJavaとKotlinの混じった開発に支障はなくて安心。
進捗(´・ω・`)
AndroidStudioのプロジェクト作成方法
AndroidStudioを使ってAndroidアプリを作成する時に最も大切と言っても過言ではないであろうプロジェクト作成についての記事を書きます。
環境
AndroidStudio 2.3
MacOS Sierra
本題
まず初めに、「Start a new Android Studio project」を選択します。
次に「プロジェクト名」、「ドメイン名」、「パッケージ名」、「プロジェクトの保存場所」を決めます。
プロジェクト名等を決めたら、次は作るアプリの対象とするAndroidOSの最低バージョンを決めます。
その次に、デフォルトとなるアクティビティを追加することができます。
ここで「Add No Activity」を選択して追加しなくても後で追加できます。
最後に、追加したアクティビティの名前やもう少し詳しい設定をしたりします。
(ここでは「Empty Activity」を選択しているので名前だけです)
そして、「Finish」を押すとプロジェクトが作成されます。
mito.
テキストボックスに入力した文字列を取得して表示する
タイトル通りなんですが、入力した文字を取得して表示させます。
表示のさせ方はトースト(朝食じゃないです)やダイアログ、テキストビューで出します。
開発環境
AndroidStudio2.3
MacOS Sierra
プロジェクト作成
Project : Get_String_Textbox
MinimumSDK : API19(KitKat)
レイアウト作成
今回のレイアウトでは
- テキストボックス
- ボタン
- テキストビュー
をそれぞれ一つずつ配置します。
android:id="+id/hoge"
のようにして、それぞれにidを設定してください。(後で使います)
コード例
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout 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="vertical" tools:context="com.example.mito.get_string_textbox.MainActivity"> <EditText android:id="@+id/editText" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="156dp" android:ems="13" android:inputType="textPersonName" android:hint="Please Input Text" android:layout_alignParentTop="true" android:layout_centerHorizontal="true" /> <TextView android:id="@+id/textView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentTop="true" android:layout_centerHorizontal="true" android:layout_marginTop="90dp" android:text="No Input" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerVertical="true" android:layout_centerHorizontal="true" android:text="GET" android:id="@+id/button"/> </RelativeLayout>
処理を書く
まず、テキストボックスやボタン、テキストビューの変数を用意します。
private EditText editText; private Button button; private TextView textView;
これらのインスタンスをonCreate内で生成します。
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //変数 = (キャスト)findViewById(使いたいウィジェットのid) editText = (EditText) findViewById(R.id.editText); button = (Button) findViewById(R.id.button); textView = (TextView) findViewById(R.id.textView); }
ボタンにリスナー(その動作、今回で言えばボタンが押された時に呼ばれるやつ)を設定します。
button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { //ここに押された時の処理を記述 } });
押されたら、テキストボックスから文字列を取得してそれをテキストビューにセットします。
onClick内に記述
String text = editText.getText().toString(); //EditText(テキストボックス)から文字列を取得 if (!text.equals("")){ textView.setText(text); //TextViewに文字列をセット editText.setText(""); }
setText()
で文字列のセット、 getText()
で文字列を取得できます。
今度は入力された文字列をトーストで表示してみましょう。
//Toast.makeText(コンテキスト, 表示したい文字列, どれぐらい(時間)表示させたいか(LONG or SHORT)).show();
Toast.makeText(view.getContext(), text, Toast.LENGTH_LONG).show();
最後にshow()しないと表示されません。(mitoは忘れていて悩んでました)
コンテキストについては今は詳しく知らなくてもいいです。(thisや上のコードのようにすると良さげ)
これでトースト表示まではできたはずです。
最後に、ダイアログで表示させます。
new AlertDialog.Builder(view.getContext()) .setTitle("ダイアログ") //タイトル .setMessage(text) //本文 .setPositiveButton("OK", null) //押したら閉じるボタンみたいなやつのテキスト(第一引数) .show();
ダイアログはこちらからコピペで使えます。
Fragmentを作った方がいいと書いてありますが、今回は書いていません。
おまけ
ついでにボタンを押した時に何も入力されていなかったらトーストを表示されるようにしてみましょう。
if (!text.equals("")){ ... ... } else { Toast.makeText(view.getContext(), "入力してください", Toast.LENGTH_SHORT).show(); }
最終的なコード
MainActivity.java
package com.example.mito.get_string_textbox; import android.os.Bundle; import android.support.v7.app.AlertDialog; import android.support.v7.app.AppCompatActivity; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.TextView; import android.widget.Toast; public class MainActivity extends AppCompatActivity { private EditText editText; private Button button; private TextView textView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); editText = (EditText) findViewById(R.id.editText); button = (Button) findViewById(R.id.button); textView = (TextView) findViewById(R.id.textView); button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { String text = editText.getText().toString(); if (!text.equals("")){ textView.setText(text); editText.setText(""); Toast.makeText(view.getContext(), text, Toast.LENGTH_SHORT).show(); new AlertDialog.Builder(view.getContext()) .setTitle("ダイアログ") .setMessage(text) .setPositiveButton("close", null) .show(); } else { Toast.makeText(view.getContext(), "入力してください", Toast.LENGTH_SHORT).show(); } } }); } }
activity_main.xml
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout 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="vertical" tools:context="com.example.mito.get_string_textbox.MainActivity"> <EditText android:id="@+id/editText" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="156dp" android:ems="13" android:inputType="textPersonName" android:hint="Please Input Text" android:layout_alignParentTop="true" android:layout_centerHorizontal="true" /> <TextView android:id="@+id/textView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentTop="true" android:layout_centerHorizontal="true" android:layout_marginTop="90dp" android:text="No Input" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerVertical="true" android:layout_centerHorizontal="true" android:text="GET" android:id="@+id/button"/> </RelativeLayout>
mito.
3/11 追記
githubにて今回のプロジェクトを公開しました。
リンク(https://github.com/mitohato/AndroidTutorial)
Beacon検知
「ふぁみここ」を作成する際に、ビーコンの情報を取得しないといけない時にやり方が調べてもよくわからず、先輩に話を聞いたりして作成したので、そのやり方
engineer.recruit-lifestyle.co.jp
こちらのサイトを参考にさせていただきました。
やりたいこと
ボタンを押すとビーコンの検知を開始して、もう一度押すと終了するアプリ。
検知したビーコンの情報はログに出す。
開発環境
MacOS sierra
AndroidStudio 2.2.3
java8
準備
まずプロジェクトを作成します。
プロジェクト名「GetBeacon」
API 21:Android5.0 Lollipop
Empty Activity
ボタン配置
デフォルトで入っているTextVIewを削除して、Buttonを追加します。
自分は、真ん中に配置しました。
<!--省略--> <Button android:text="Button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerVertical="true" android:layout_centerHorizontal="true" android:id="@+id/button" /> <!--省略-->
ボタンを押した時のリスナー用意
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Button btn = (Button)findViewById(R.id.button); btn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { } }); }
ビーコン検知する
パーミッションを追加
<uses-permission android:name="android.permission.BLUETOOTH" /> <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
をmanifests(app/src/main/AndroidManifest.xml)フォルダ内の<application
と同じ高さに追加します。
このアプリが動作する端末をBLEが利用可能な端末のみにするには
<uses-feature android:name="android.hardware.bluetooth_le" android:required="true"/>
も追加します
ビーコンを検知した時に呼ばれるCallBackを用意
新しくJavaClassを作成して、その名前をIbeaconScanCallBackにします。
このコールバックの中身は後で記述します。
BLE受信開始するためのコードを用意
BluetoothLeScanner mBLEScanner; IbeaconScanCallback scanCallback; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // Bluetoothの生成(ここは5.0以前も一緒) final BluetoothManager bManager = (BluetoothManager)getSystemService(BLUETOOTH_SERVICE); final BluetoothAdapter bAdapter = bManager.getAdapter(); // Bluetoothサポートチェック final boolean isBluetoothSupported = bAdapter != null; if (!isBluetoothSupported) { // 非サポート時の処理を書く return; } // Bluetoothオンかチェック if (!bAdapter.isEnabled()) { // オフ時の処理を書く return; } mBLEScanner = bAdapter.getBluetoothLeScanner(); scanCallback = new IbeaconScanCallback(); Button btn = (Button)findViewById(R.id.button); btn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { } }); }
2つほどエラーが出ていると思いますが今は気にしないでください。
IbeaconScanCallbackの内容を記述していく
public class IbeaconScanCallback extends ScanCallback{ final String TAG = "Beacon"; @Override public void onScanResult(int callbackType, ScanResult result) { super.onScanResult(callbackType, result); // スキャン結果が返ってきます // このメソッドかonBatchScanResultsのいずれかが呼び出されます。 // 通常はこちらが呼び出されます。 //スキャン結果からビーコンの情報を取得する BluetoothDevice bDevice = result.getDevice(); //情報からアドレスをログに出す Log.d(TAG, bDevice.getAddress()); } @Override public void onScanFailed(int errorCode) { super.onScanFailed(errorCode); // エラーが発生するとこちらが呼び出されます String errorMessage = ""; switch (errorCode) { case SCAN_FAILED_ALREADY_STARTED: errorMessage = "既にBLEスキャンを実行中です"; break; case SCAN_FAILED_APPLICATION_REGISTRATION_FAILED: errorMessage = "BLEスキャンを開始できませんでした"; break; case SCAN_FAILED_FEATURE_UNSUPPORTED: errorMessage = "BLEの検索をサポートしていません。"; break; case SCAN_FAILED_INTERNAL_ERROR: errorMessage = "内部エラーが発生しました"; break; } Log.d("ERROR", errorMessage); } }
BluetoothScanを開始
スキャンが開始しているかのためにflag変数を用意します。
その後、ボタンのリスナー内にスキャンを開始させるためのコードを記述します。
btn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { if (flag) { //スキャン開始 mBLEScanner.startScan(scanCallback); } else { //スキャン停止 mBLEScanner.stopScan(scanCallback); } flag = !flag; } });
以上でボタンを押したらビーコンの検知を開始、もう一度押すと停止。
これで検知したビーコンのアドレスをログに出すことができたと思います。
詳しい説明等は参考元を見てみてください。
参考元と変わっている部分が多々あるので気をつけてください。
参考元
http://engineer.recruit-lifestyle.co.jp/techblog/2015-01-15-using-ibeacon-on-android5/
mito.
2/23 追記
Githubにて今回説明したアプリのプロジェクトファイルを公開しました。
https://github.com/mitohato/GetBeacon
2/23 追記 ↑のGithubのリポジトリにてkotlinで書いた同アプリのプロジェクトを作成・公開しました。
2018/11/9 追記
Android 6.0からはパーミッションに以下のいずれかを追加しないといけなくなりました。
android.permission.ACCESS_COARSE_LOCATION
or android.permission.ACCESS_FINE_LOCATION
スライドでタブを切り替えられるUI作成
※この記事はAndroid開発初心者が模索しながら開発した時に、行ったことを書いた(or 説明した)記事なので、誤り等が多々とあると思います。ですので誤り等があったら優しく指摘してくれることを願っています。
イメージ
イメージとしてはTwiiterやLINEみたいな感じ。画面に複数のタブがあり、タブタップとスワイプによってタブを切り替えるUIを作成したい。
イメージ
これを実装しようとした時に調べていたら、なんか難しそうな記事ばかり出てきて自分みたいなFragmentもわかっていない(今もなんとなくだけど)完全な初心者にとっては優しくなかったです。
よく見かけるUIだから簡単にできるのではと思い、そういえばAndroid Studioに元々用意されているActivityを全く見ていなかったなと思い見てみるとありました。
だから簡潔に言ってしまえばデフォルトで用意されているテンプレートみたいなの使えば終わりです。
見よう見まねですが説明させていただきます。
環境
Android Studio Version 2.2.3
java バージョン8
macOS Sierra バージョン10.12.2
手順
まずAndroid Studioを起動して、「Start a new Android Studio project」を選択します。
次に、プロジェクト名やプロジェクトの保存先を決めて、右下にあるNextボタンを押します。
押したら、次の画面に移ると思います。ここでAPIを13以上に設定します。そうしないと今回紹介する方法では出来ません(理由等は未調査)。APIを設定したら先ほどと同じくNextボタンをクリックします。
次は下のような画面になると思います。ここでテンプレのActivityを選択することができます。(Activityに関してはこちら)
その中から一番下にあるTabbed Activityを選択してNextを押します。
そうすると、次のような画面になります。この画面の真ん中あたりにある「Navigation Style」を変更するとタブを切り替えるUIのタイプを変更できます。
ここで変更できるタイプは3種類ありますが、今回はスライドでタブを切り替えられるUI作成なのでAction Bar Tabs (with ViewPager)だけにさせていただきます。
選択するとプロジェクトが作成されます。
作成されたプロジェクトをビルドするとこのようになると思います。
これでスワイプでタブを切り替えられるUIの作成が完了しました。
カスタマイズ(?)
スワイプでタブを切り替えられるUIを作成したとはいえ、タブの名前や数を変えたい、タブごとに対応した画面を表示したいなどあると思います。
・タブの名前を変える
MainActivity.javaの下の方にあるgetPageTitleを変更します。
ここで引数のpositionは、今見ている(表示されている?)タブの番号で、左から順に0,1,2...です。このposition変数に合わせて変更したいタブの名前を戻り値として返してあげればその名前になります。
・タブの数を変える
getPageTitleの上の方にある(であろう)getCountを変更します。
ここでタブの数を戻り値として返してあげればその数タブができます。
デフォルトは3が戻り値となっており、この場合タブは3つです。
・タブごとに対応した画面を表示する
getCountの上にある(であろう)getItemを変更します。
ここでもgetPageTitleと同じようにpositionに対応したFragmentを戻り値として渡してあげれば良いです。(Fragmentについてはこちら)
これで一通りの説明を終わらせていただきます。
最初の方にも書いた通り、詳しく分かっていないところだらけなので間違い等がございましたら指摘お願いいたします。
また疑問に思ったことなどもよろしくお願いします。
順序が逆になってしまいましたが次はAndorid Studioでプロジェクト作成する方法をまとめてみます。
mito.