TORA LOG

好きなことをまとめるBlog

好きなゲームの話(1)

Unityエンジニアとなり早X年

その前からゲームは大好きで色々遊んできた

その中から好きなものをつらつらと書いていく
(何回かに分けようかな)

ポケモンシリーズ

一番Playしたのは ポケットモンスター ルビー・サファイア
今でもサクサクプレイできる感じはとても大好き

GB・GBA・DS・3DS・SW
基本的にすべてのシリーズ遊んできました
(サン・ムーンだけ出来てない)

ポケモンが1000種類突破したとも報告ありましたし
大人気長編シリーズですね

www.pokemon.co.jp

推しは
ジュカイントリトドン

剣盾ではブイズパーティーでストーリー攻略してみたり
色々遊べて楽しかった

マインクラフト

主にYoutubeの実況とかでよく見る

みんなでワイワイプレイできるのがいいね

色々なMODを導入してオリジナルのルールでPlayするとか
遊び方は無限大みたいなゲーム好き

www.minecraft.net

色々な方が実況されているけど
好きなYoutuber記事書きたいのでそのときに書く

www.youtube.com

魔法使いと黒猫のウィズ

ソシャゲでハマったゲーム

もともとクイズゲームが好きで始めて
付随してストーリーやキャラクターや絵がいい

クイズゲームって実質勉強なので
「ゲームは一日N時間まで」には入りません

colopl.co.jp

今年で10周年
もっと流行って(懇願)

ゲームの中で色々なイベントをしていて
個性豊かなキャラや世界観が味わえる

www.youtube.com

推しはミュールちゃんです

なかなか公開日記が書けない言い訳

あけまして(?)おめでとうございます(._.)
2023年もよろしくおねがいします!

しばらく更新してないこのBlogも開設8年目です。

記事は書こうとは思っているが
いつも途中で踏み止まる事が多いのです…

その理由をぼんやりと考えてたので書いていこうと思います

なんかうまくまとまらない

語彙力や国語力が乏しいので書いてる事がめちゃくちゃになってしまいます。

常にTwitterの短文投稿をやり続けてる感じです

書いてる途中で見返して
「違和感あるなぁ」「でもうまく書けないなぁ」
悲しく感じてしまいます

炎上こわい

知識不足でつらつらと意見を書いて怒られるの怖い

完璧主義ではないですが
間違ったことを書くのを恐れて必要以上に調べたり、書くのをためらったりします

身バレこわい

炎上とつながるんですが
何かあったときに
「この人は株式会社〇〇の人だ」「いーけないんだ!拡散してやろ」
となるの怖い

ましてはアンチが多い会社なので…

なんか痛い

深夜テンションで書いた記事とか
後で見返すと辛さあります…

すでにあるんですが、もう放っておきます(諦)

昔の自分のSNSとか見るとこんな感じですね

時間の無駄になってそう

だったら見るな!って思いはしますが
果たしてこの記事は他人にとって有益なのだろうか


つらつら書いてきたのに眠気からか思ってたことを忘れかけている…(寝ましょう)

最近周りの人がブログとか書き始めてる人が多かったので、自分も再開したい所存です

今年は変に気負わず
技術記事とかにもこだわらずにBlogを書いていきます

TabLayoutの初期タブ(2)

以前このような記事を書きました. TabLayoutの初期タブ - TORA LOG

解決方法?と言いますか,これも怪しいですが解決方法を考えてみました.

TabLayout tabs = (TabLayout)v.findViewById(R.id.tablayout);

tabs.addTab(topTab.newTab().setText("1"));
tabs.addTab(topTab.newTab().setText("2"));
tabs.addTab(topTab.newTab().setText("3"));

tabs.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
            @Override
            public void onTabReselected(TabLayout.Tab tab) {
                changeTab(tab.getPosition());
            }
            @Override
            public void onTabSelected(TabLayout.Tab tab) {
                changeTab(tab.getPosition());
            }
            private void changeTab(int position){
                switch (position){
                    case 0:
                        break;
                    case 1:
                        break;
                    case 2:
                        break;
                }
            }
});
tabs.getTabAt(0).select();

つまり,「選択されているタブをまた選択」しても「タブが切り替わった」としてしまおうということです. 以下のようにしてもいいですね.

tabs.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
            @Override
            public void onTabReselected(TabLayout.Tab tab) {
                onTabSelected(tab);
            }
            @Override
            public void onTabSelected(TabLayout.Tab tab) {
                switch (tab.getPosition()){
                    case 0:
                        break;
                    case 1:
                        break;
                    case 2:
                        break;
                }
            }
});

問題は「選択されているタブをまた選択」でタブが再読込されることですかね. その場合はフラグで処理するしか…?

tabs.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
            private boolean startUp = true;
            @Override
            public void onTabReselected(TabLayout.Tab tab) {
                if(startUP){
                    startUp = false;
                    onTabSelected(tab);
                }
            }
            @Override
            public void onTabSelected(TabLayout.Tab tab) {
                switch (tab.getPosition()){
                    case 0:
                        break;
                    case 1:
                        break;
                    case 2:
                        break;
                }
            }
});

というやっつけ感満載の対応策でした.

TabLayoutの初期タブ

TabLayout tabs = (TabLayout)v.findViewById(R.id.tablayout);

tabs.addTab(topTab.newTab().setText("1"));
tabs.addTab(topTab.newTab().setText("2"));
tabs.addTab(topTab.newTab().setText("3"));

tabs.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
            @Override
            public void onTabSelected(TabLayout.Tab tab) {
                switch (tab.getPosition()){
                    case 0:
                        break;
                    case 1:
                        break;
                    case 2:
                        break;
                }
            }
});
        

みなさんの中で、こういう風にAndroidのTabLayout使用している方がいると思います。
そして任意のタブに初期タブを設定するとき

tabs.getTabAt(NUM).select();

なんてしませんか?じゃなきゃ真っ白のままで何も出ませんよね…(ViewPagerと連携していれば別ですが)

しかしこれ先頭の

tabs.getTabAt(0).select();

としても何も出ません。why?
おそらくですが、初期が0番目のタブに設定されているので、0を選択してもタブが変わったと認識されないみたいです…
初期タブを設定するメソッドもなさそうですし、どうしたら先頭を初期タブとして設定できるのでしょうか?…

とりあえずの解決策として自分は

tabs.getTabAt(1).select();
tabs.getTabAt(0).select();

つまり、隣を先に表示して戻ってきてるだけですね(笑)
これだと初期ダブが必ず2個以上必要となりますが動きます。
もっと良い方法は無いですかね、教えて欲しいです…
調べていい方法あったらまた書き込みますね(^^)

Gson 2.4 バグ?

Gson 2.4を利用してJSONをパースしてた時無限ループに陥る時があった。

環境としてはGson 2.4とRealm 0.87.4 を利用し、Android6.0.0(Level23)です。

Androidのbuild.gradleに以下のように

compile 'com.google.code.gson:gson:2.4'

と書いて、RealmObjectをそのままGsonのPOJOとして利用してVolleyで取得した文字列をJSONとして食わせました。
 
AndroidMonitorで見るとどんどんメモリが食いつくされていき…死。ループしているのでしょうか?
 
 
ちなみにAndroid4.1.1(Level16)では死にませんでした(^o^)あれ
 
とりあえずの解決方法として

compile 'com.google.code.gson:gson:1.7.+'

のようにバージョン落とすと両方のAndroidバージョンで利用できました。
RealmObjectをGsonのPOJOとして利用したのが悪かったのか、Gsonのバグなのか、Androidバージョンのせいなのか、今のところ原因は不明です(^^)。。。どなたか教えていただきたい