強力で動的なUIのためにAndroidアプリでフラグメントを使用する方法

著者: John Stephens
作成日: 28 1月 2021
更新日: 19 5月 2024
Anonim
Android で RxKotlin を始めよう - こんにちは RxKotlin! --raywenderlich.com
ビデオ: Android で RxKotlin を始めよう - こんにちは RxKotlin! --raywenderlich.com

コンテンツ


注:この記事は、Android開発とJavaの基本に精通していることを前提としています。すでに基本的なレイアウトを作成してビューを使用できるはずです。 onClick そして findViewByID。 これらの概念を理解すれば、フラグメントの使用方法を学ぶ準備が整いました!

フラグメントは、優れたAndroid UIの強力な機能であり、モジュール方式でアプリの設計にアプローチできます。これらは、レイアウト全体を含むことができ、独自のJavaコードが付属する個別のビューです。このようにUIを分解することにより、ユーザーが理解しやすいより論理的なレイアウトを作成できます。アクティビティを離れる必要なく、追加の情報とコントロールを提供できます。

参照:手間のかからないフラグメント: Androidのナビゲーションアーキテクチャコンポーネントの使用

フラグメントにより、アプリ設計のオプションが大幅に増え、ユーザーエクスペリエンスが大幅に向上します。

さらに、フラグメントはクラスやオブジェクトのように振る舞います。 インスタンス 同じフラグメントの。つまり、コードを書き直さなくても同じレイアウトを何度も再利用したり、2つの異なるバージョンを並べて表示したりできます。

要するに、これはまだです 別の Androidアプリに関連する一見無限のTo-Doリストに関して学ぶべきことは、アプリ設計のオプションを大幅に増やし、ユーザーエクスペリエンスを大幅に改善できることです。 。

最初のAndroidフラグメントを構築する方法

それでは、他の方法では意味をなさないフラグメントで何ができるでしょうか?

おそらくファイルのリスト(これはイメージギャラリーかもしれません)があり、説明を表示し、ユーザーに削除または共有のオプションを提供したいと考えています。そのようなこと。個別のアクティビティを使用することで、毎回新しい「説明」ページに送信できますが、フラグメントを使用すると、それらを1つのページに保持することができます。


Android Studioを開き、ランダム画像のリストを作成します activity_main.xml。私はの写真を使用しています ドラゴンボールスーパー 私はオタクだからです。それが私のPCに横たわっているからです...

次に、最初のフラグメントを作成します。

これを行うには、に向かいます ファイル>新規>フラグメント。 これを行うには、MainActivity.javaを左側で選択する必要があります。今は「空白」のフラグメントを選択します。その後、新しい作成者の名前を選択できます。これを「説明」と呼びます。下の2つのボックスのチェックを外します。今は必要ありません。

これが完了すると、Description.javaという名前の新しいjavaファイルだけでなく、fragment_description.xmlという名前の新しいレイアウトファイルもあることに気付くでしょう。まるで新しいクラスを作成したかのようです。これは、新しいフラグメントに付随するコードを独自のJavaファイルに配置することを意味します。

レイアウト、ビュー、コードを追加する

良いニュースは、フラグメントを使用するときにビューとレイアウトを追加するのは非常に簡単だということです。 fragment_timer.xmlを編集することで、通常どおりにこれを行います。

再び線形レイアウトを使用してみましょう。今回はいくつかのコントロールと説明テキストを追加します。今のところ何でもここに貼り付けることができます。


それでは、次の質問は、これを実際にアプリにどのように表示させるかです。

これを行うには、他のビューと同様に、アクティビティにフラグメントを追加します。そのため、activity_main.xmlに進み、ビューを追加して、画面の一部(おそらく下部)を占めるようにします。

私と同じようにしたい場合は、垂直線形レイアウトを使用して、すべての画像の重みを1に、フラグメントの重みを2に設定しました。

プレビューでは実際のフラグメントは表示されず、プレースホルダーのみが表示されます。同様に、フラグメントの名前をXMLに含める必要があることに注意してください。これにより、Androidがフラグメントの場所を認識できるようになります。また、フラグメントごとにIDが必要です。

コード

前述のように、フラグメントを使用する必要があるコードは、独自のjavaファイルに入れます。この場合、それはDescription.javaファイルです。

このページをチェックアウトすると、コンストラクター(オブジェクトを作成するクラスの場合と同様)と呼ばれるメソッドがあることがわかります。 onCreateView。その方法は、xmlを使用してそのビューを膨らませる場所であり、通常の onCreate 標準アクティビティのメソッド。

ほとんどの場合、ここで通常行うことを実行できます。 findViewByID 動作し、これを使用してテキストなどを変更できますが、参照をわずかに異なる方法で取得する必要があります。次の行を変更します。

return inflater.inflate(R.layout。fragment_description、コンテナ、false);

に:

ビューv = inflater.inflate(R.layout。fragment_description、コンテナ、false);

次に使用します:

v.findViewByID。

これで、通常どおりにビューにアクセスできます。

public View onCreateView(LayoutInflater inflater、ViewGroup container、Bundle savedInstanceState){View v = inflater.inflate(R.layout。fragment_description、コンテナ、false);ボタンokButton = v.findViewById(R.id。OK);;ボタンshareButton = v.findViewById(R.id。シェア); okButton.setOnClickListener(new View.OnClickListener(){public void onClick(View v){トースト。makeText(getActivity()、「OK!」、Toast。LENGTH_LONG ).show(); }}); shareButton.setOnClickListener(new View.OnClickListener(){public void onClick(View v){トースト。makeText(getActivity()、「Sharing ...」、Toast。LENGTH_LONG ).show(); }}); return v; }}

複数のインスタンスでフラグメントを使用する

フラグメントを使用すると、合理化されたUIとコードを作成するのがはるかに簡単になることがわかります。レイアウト内レイアウトを使用してから、1つのJavaファイル内ですべてのクリックをジャグリングする代わりに。さらに、この「モジュール式」アプローチでは、アクティビティ全体やメニューやその他の動的な場所でもこのビューを使用できます。

しかし、本当にクールな部分は、この非常に同じフラグメントの複数のインスタンスをすべて同時に存在させることができるという事実です。

これを行うのは簡単です。複数のビューを追加し、まったく同じコードで膨らませるだけです。

うまくいけば、フラグメントを使用する力のいくつかを見ることができることを願っています:画像のリサイクルビュー(スクロールリスト)を想像してください。各画像にはすぐ下に詳細とコントロールがあります。毎回まったく新しいレイアウトを作成する必要はなく、ユーザーが写真をクリックするまでビューを非表示にできます。

さらに、新しいフラグメントをプログラムで生成することもできます。必要なのは、フラグメントをレイアウトのどこかに入れることです。たとえば、フレームレイアウト(これを呼び出します) fragmentTarget)そして、次のことができます:

フラグメントaddedFragment = new Description(); FragmentTransactionトランザクション= getSupportFragmentManager()。beginTransaction(); transaction.replace(R.id。fragmentTarget、addedFragment); transaction.addToBackStack(null); transaction.commit();

必要なクラスを必ずインポートしてください。コードでフラグメントを使用しようとすると、プロンプトが表示されます。 「v4」という一番上のオプションを選択してください。

フラグメントをプログラムで追加できることは重要です。これは、画像の動的なリスト(ダウンロードしたもの、特定のフォルダーなどにある)を生成し、すぐに詳細をポップアップ表示できるためです。

したがって、この新しい例では、2番目のフラグメントがプログラムによって追加されています。

最後に、フラグメントの場所に応じてフラグメントの外観を変更したい場合があります。幸いなことに、フラグメントを作成するときにIDをバンドルとして渡し、もう一方の端でその値を抽出することにより、これを簡単に行うことができます。

MainActivity.javaで次を使用します。

バンドルbundle = new Bundle(); bundle.putInt( "ID"、1); addedFragment.setArguments(bundle);

次に、Description.javaに以下を追加します。

int eyeD = 0;バンドルbundle = this.getArguments(); if(bundle!= null){eyeD = bundle.getInt( "ID"、0); }スイッチ(eyeD){ケース1:…

その後、たとえば、アプリに画像ごとに異なるメモを表示させることができます。

最後のコメント

それがフラグメントの使い方です。基本を理解していただければ、この投稿で十分な理解が得られ、先に進んで残りの部分を理解できることを願っています。さらに重要なことは、フラグメントの可能な用途のいくつかと、それらがよりスマートなアプリ設計に提供する可能性を示したことを願っています。

実際のフラグメントの別の例をご覧になりたい場合は、カスタムランチャーの作成に関する最近の投稿をご覧ください。

Android開発:

  • わずか7分でAndroid用VRアプリを作成する方法
  • Googleアシスタント用に独自のアクションを作成する
  • Root Android:知っておくべきことすべて!
  • アプリの構造:アクティビティライフサイクルの紹介
  • Android Jetpack:最近の発表はAndroidのサポートライブラリにとってどのような意味がありますか?

米国で契約なしのプリペイドキャリアに切り替えたい場合、Boot Mobileは最適な選択肢の1つです。さまざまなプレミアムで手頃な価格のスマートフォンを利用でき、デバイスやプランに関するかなりの数の情報を提供します。現在提供されている最高のBoot Mobile取引の一部をご紹介します!月額100ドルの4行月額$ 80のUltimate Unlimitedオンラインおよび店舗内のスマートフォン取引...

米国のプリペイドキャリアへの移行を検討している場合、多くの選択肢があります。最も優れているのは、printを搭載したBoot Mobileです。 Verizon、AT&T、print、およびT-Mobileで購入できる最高の携帯電話については既に検討しました。ここでは、最高のBoot携帯電話を紹介します。このプリペイドキャリアにはプレミアムデバイスの幅広い選択肢があり、正直なところ、少し混乱するこ...

今日飛んだ