素人のアンドロイドアプリ開発日記

fragmentのコンテンツ

fragment使い方のまとめ

2018.04.12

fragmentについては、いろいろ実験内容をこのブログで記述しましたが、結局のところ、やる事は、メインのレイアウトにつける事と外す事が主な対応にはなりそうです。 続きを読む…

カテゴリー:fragment

activityとfragmentを使う時の自分ルールを制定

2015.07.03

使い方をまとめました。こちらの記事は考察なども含まれてるので、簡潔に分かりたい場合はこちらを参照してください

fragmentの使い方まとめ

なんとなく自分で作る用のメモ(パズドラみたいのを作る時のfragmentの設計みたいなもの)

fragmentに関して部品である。

と考えて、また取り外しにおいて要素をメモリ上から消すのも簡単。

で、作る時には

activityはフラグメントを入れる要素のみ配置する

っていうルールを自分で持ちます。

(ここも持たないで自分で作ってもいいけど、そうすると取り外し・重ね順が面倒なので、とりあえずは、このまま)

で対応をします。

■起動
-splashfragment
-loadingfragment

時間の経過で、splashfragmentをreplaceでloadingfragmentに。

loadingfragmentの時、loadingの実態は、activityで実装して状態の変化をloadingfragmentに送るのみ。

loading終了したら、loadingfragmentをremoveで完了。とすると、同じactivity内だけど、fragmentで配置したものはメモリからも消してある。

■パズドラみたいなタブのゲーム選択画面
-headerfragment
-footerfragment
-contentfragment

でここでは、各fragment毎にレイアウトで配置をする。
各フラグメントからの、ボタンクリックなどは、見た目の変更などを除いて、とりあえずactivityに持ってくる。

表示としては、contentfragmentだけ、0.1秒あとに読み込みでいいかなと。
contentfragmentはreplaceをして切り替えていくイメージ

■ローディング・ダイアログについて
-dialogfragment
-loadingfragment
-confirmfragment
-errorfragment

とか前面で表示したいものは一括で用意をする。表示・非表示においては、自分で管理するが、ひとつのレイアウトに対してのreplaceをする事で、余計な事をしない用になりメモリの節約ができる

■ゲーム画面について
-gamefragment
-gamesettingfragment

ゲームを実装する部分とゲーム以外を実装する部分で分けて実装をできるよ良い。
場合によっては1つのfragmentでもいいが、header footerを分けて実装でも問題はない。

タブのゲーム選択画面で設定していた要素については、すべて、removeしていると理想的。

 

ちょっと自分で作る用のメモなので、なんかわかりにくい感じですいません。

各fragmentを用いる事でactivityの遷移なしで、アプリが作れる感じになります。

カテゴリー:fragment

Fragmentを勉強する その5

2015.07.02

使い方をまとめました。こちらの記事は考察なども含まれてるので、簡潔に分かりたい場合はこちらを参照してください

fragmentの使い方まとめ

fragmentの中身が存在するときには、戻るボタンでfragmentをけして、存在しない時にアプリを終了させればいいやと思ったので、

Activityクラス内で

@Override
 public boolean dispatchKeyEvent(KeyEvent event) {
 if (event.getAction()==KeyEvent.ACTION_DOWN) {
 if(event.getKeyCode() == KeyEvent.KEYCODE_BACK) {
 FragmentManager fragmentManager = getFragmentManager();
 if(fragmentManager.findFragmentById(R.id.root) != null){
 フラグメント削除の記述
 return false;
 }
 }
 }
 return super.dispatchKeyEvent(event);
 }

をしました。

特にアニメーションとかなく、消えてしまえばいいのであれば、

FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
fragmentTransaction.remove(fragmentManager.findFragmentById(R.id.frag));
fragmentTransaction.commit();

でいいです。前ページに戻るとかの設定も似た感じで対応できますね。

カテゴリー:fragment

Fragmentを勉強する その4

2015.07.01

使い方をまとめました。こちらの記事は考察なども含まれてるので、簡潔に分かりたい場合はこちらを参照してください

fragmentの使い方まとめ

数回にわたり、勉強をしてきたのですが、fragmentのページ遷移用テンプレートを作りました。

public class mFragment extends Fragment {

private View rootView;
private CallbackFunction callback;
public mFragment(CallbackFunction _callback) {
callback = _callback;
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {
rootView = inflater.inflate(R.layout.frag1, container,false);
//イベントなど設定はここでいいかも。

return rootView;
}
@Override
public void onDestroy() {
rootView = null;
callback = null;
super.onDestroy();
}
public interface CallbackFunction {
public void callback();
}
}

を自分の中でテンプレートとして利用をしてみます。

他の人ので、はsaveInstanceに固有値を保持しておいて、戻ってきた時に、値が取り出せる。とか、そういうのが入っていたかと思うのですが、値の管理はActivityに任せる形を選択する事でfragment側は、割と簡易的に表示できたかと思います。

カテゴリー:fragment

Fragmentを勉強する その3

2015.07.01

使い方をまとめました。こちらの記事は考察なども含まれてるので、簡潔に分かりたい場合はこちらを参照してください

fragmentの使い方まとめ

fragment内から、findViewByIdを使う方法を調べたら、

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {
 View rootView = inflater.inflate(R.layout.frag1, container,false);
 rootView.findViewById(R.id.button1).setOnClickListener(new OnClickListener() {
 @Override
 public void onClick(View v) {
 
 }
 });
 return rootView;
}

みたいな解決方法が多々見受けられたのですが、これじゃ、ライフサイクル内部でしか参照できないじゃん。という、疑問が出てしまうのですが、結局なところ、使い易くする為には、

View rootView;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {
 rootView = inflater.inflate(R.layout.frag1, container,false);
 return rootView;
}

とすると、rootViewがどこからでも参照可能。なので、これにしました。

で、ライフサイクルが存在してくれてるので、

@Override
public void onDestroy() {
 rootView = null;
 super.onDestroy();
}

をしておけばメモリ的にも安心かと思います。

 

カテゴリー:fragment

公開中のアプリ、是非ダウンロードしてみてください

2chまとめのたね

RSSを利用してさまざまなブログの情報をキュレーションしてくれるアプリ

インストールする

ひらがな戦記

OPENGL ES2 を利用したカルタのソーシャルゲーム

インストールする