📱 Android Studio Series - Fragment
ℹ️ Introduction
Android Studioに関するPostを初めて書きたいのですがC++To Java Post図結末を知らないまま、このような前後の矛盾した疑問は著者の頭の中でも離れられない.
申し訳ありません.私自身に.この文章とC++To Java Postの友達に
6専攻がこんなに人を傷つけるとは思わなかった.
Verlog起動時に作成したIntro台で、小さなプロジェクトで学んだ概念に基づいて、複数の参照とソースコードを再編成し、最も正確な情報に基づいて1つずつ作成します.他に説明がない限り、このシリーズのすべてのソースコード(Postを含む)はJavaで記述されていると考えられます.
今期のアナウンサーは分割を検討する.
🎛 Why We Use Fragments?
Fragmentは、FragmentActivityのいくつかのアクションまたはユーザーインタフェースを表します.
複数のタグを1つのアクティビティにマージして、複数のウィンドウを持つUIを構築し、複数のアクティビティで1つのタグを再利用できます.アクティブなモジュール化された部分と見なすことができます.独自のライフサイクル、独自の入力イベントの受信、およびアクティビティの実行時にイベントを追加および削除します.
(他のアクティビティで繰り返し使用できるサブアクティビティと見なすことができます.)
Fragmentは、FragmentActivityのいくつかのアクションまたはユーザーインタフェースを表します.
複数のタグを1つのアクティビティにマージして、複数のウィンドウを持つUIを構築し、複数のアクティビティで1つのタグを再利用できます.アクティブなモジュール化された部分と見なすことができます.独自のライフサイクル、独自の入力イベントの受信、およびアクティビティの実行時にイベントを追加および削除します.
(他のアクティビティで繰り返し使用できるサブアクティビティと見なすことができます.)
Androidのアクティビティは、アプリケーション画面を構成する基本単位です.Activityを設定すると、画面が複雑すぎるかコード量が大きいため、画面の各部分を個別に実行したい場合があります.また、1つのActivityをベースに複数の画面と機能を交互に表示したい場合があります.
分割機能は、2つ以上の画面間をすばやく移動して、各画面を独立したコードに分割するのに役立ちます.
Android導入分割はAndroid 3.0(APIレベル11)から始まった.基本的には、Tableのような大画面でよりダイナミックで柔軟なUIをサポートすることを目標としています.PhoneデバイスよりもTabletの画面が大きく、より多くのコンポーネントを収容できます.
上の写真を見せてください.Tableでは、リスト分割とリスト分割の特定の操作により、内部要素が変化するDetail分割と2つの分割を1画面に配置できます.ただし、Phoneデバイスはリスト分割のみを表示し、ユーザはリスト分割内で特定の操作を実行しなければならず、TabletのUIと同じ形式でDetail分割を表示しなければ実現できない.△一般的なスマートフォンのKakaoTalk画面をタブレットやGalaxyFoldのKakaoTalk画面と比較すると、より速く理解できます.
これにより、アクティブな条件(デバイスを実行するプロパティ)に基づいて異なる画面構成を作成できます.
1朕上図の左側の形状は、予め複数の分割を作成し、一度に1つの分割が画面に表示され、オプションカードメニューまたはこの輪郭間を移動するために使用される.(BottomNavigationViewを使用して分割遷移を実現する方法については後述する.)
2▼右側の形状は、大きな画面にメニューとビューを同時に表示したり、複数の部分をモジュール化して1つの画面に表示したりするために、デバイスに複数の区切り文字(例えばTable)を同時に表示するために使用されます.
この記事では主に1▼を実施する方法を紹介する.
🔨 Create a Fragment
分割について議論する前に、本稿の例(単純なアプリケーション)を見てみましょう.
MainActivity.Fragment SelectPlantとFragment Waringはjava上で交互に現れます.画面間の移動は、BottomNavigationViewによって行われ、データの移動は、分割選択平面のみによって分割トラッキングに一方向に伝送される.
このシリーズでは、上記のプロジェクトのすべてのソースコードは提供されません.必要に応じて、関連概念を説明するために一部に抜粋します.(組み合わせが良ければ完全な絵が描けるかも…?)
さらに、デフォルトでは、上述したプロセスを実施するために必要な技術のみが含まれるが、他の内容も含まれる場合がある.参考にしてください.
Javaディレクトリの下にあるパッケージ名(ここではcom.example.watertheflowers)を選択し、右クリックして表示されるメニューに選択した「分割」(Blank)を作成します.そしてNew Android Componentウィンドウで分割名を指定して生成します.Javaファイルのpublic classを次のソースコードで変更します.
📁 Fragment_SelectPlant.javapublic static class Fragment_SelectPlant extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment__select_plant, container, false);
return rootView;
}
}
📁 Fragment_Watering.javapublic static class Fragment_Watering extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment__watering, container, false);
return rootView;
}
}
MainActivityに分割を追加する方法は、BottomNavigationViewとともに「\分割取引」セクションで説明されています.その前に、FragmentManager
について説明しましょう.
⚠▼注:OnCreateViewのパラメータ
膨張器は、レイアウトファイルをロードするためのレイアウトグラフィックスを提供します.containerは、パーティションレイアウトを展開する親レイアウトで、「アクティブ」を表すレイアウトです.savedInstancesStateは、ステータス値を格納する Bundle
の補助ツールです.
この Bundle
は、分割リカバリ(すなわち、リカバリ中の場合)に関するデータを提供する.
👮 Fragment Manager
📁 Fragment_SelectPlant.JAvaファイルの共通クラスの一部です.public static class Fragment_SelectPlant extends Fragment {}
Fragment
クラス継承のFragment_SelectPlant
クラスを作成しました.しかし,ユーザはまだ分割画面を見ることができない.あなたたちのMainActivity
は何も体現していないからです.Fragmentを実際に利用するには、MainActivity
内にFragmentManager
オブジェクトを作成する必要があります.オブジェクトの作成には、getSupportFragmentManager()
と呼ばれる方法が必要です.
Fragment fa = new Fragment_SelectPlant();
A.同じパッケージのクラス自体をインポートすることでインスタンスを作成することもできます.
(上記の方法は、Activityから分割中のメソッドを呼び出すために使用されます.)
B.addToBackStack()メソッドでは、分割を挿入するためのTransactionを単一Activityのようにバックグラウンドスタックに配置できます.そのため、スマートフォンの後退ボタンで、アクティブなようにトランザクション全体を削除できます.
public static class Fragment_SelectPlant extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment__select_plant, container, false);
return rootView;
}
}
public static class Fragment_Watering extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment__watering, container, false);
return rootView;
}
}
📁 Fragment_SelectPlant.JAvaファイルの共通クラスの一部です.
public static class Fragment_SelectPlant extends Fragment {}
Fragment
クラス継承のFragment_SelectPlant
クラスを作成しました.しかし,ユーザはまだ分割画面を見ることができない.あなたたちのMainActivity
は何も体現していないからです.Fragmentを実際に利用するには、MainActivity
内にFragmentManager
オブジェクトを作成する必要があります.オブジェクトの作成には、getSupportFragmentManager()
と呼ばれる方法が必要です.Fragment fa = new Fragment_SelectPlant();
A.同じパッケージのクラス自体をインポートすることでインスタンスを作成することもできます.(上記の方法は、Activityから分割中のメソッドを呼び出すために使用されます.)
B.addToBackStack()メソッドでは、分割を挿入するためのTransactionを単一Activityのようにバックグラウンドスタックに配置できます.そのため、スマートフォンの後退ボタンで、アクティブなようにトランザクション全体を削除できます.
↔️ Fragment Transaction
デジタル旅行とは
FragmentTransactionオブジェクトの作成FragmentManager fragmentManager = getSupportFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
以上のソースコードはAndroid Developerサイトから提供されています.ここでは、FragmentManager
クラスのbeginTransaction()
メソッドを使用してFragmentTransaction
オブジェクトを作成します.次の BottomNavigationView
およびサンプルコードは、上述した方法を使用してオブジェクトを作成するのではなく、FragmentTransaction
クラスの方法を使用して2つの分割領域間でスクリーン切り替えを行う.
MainActivity.JAvaの一部
πBoottomNavigationViewによる画面切り替え
FragmentManager fragmentManager = getSupportFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
BottomNavigationView bottomNavigationView = findViewById(R.id.bottomNavi); // bottomNavigationView 인스턴스 생성
FragmentManager fragmentManager = getSupportFragmentManager(); // FragmentManager 인스턴스 생성
fa = new Fragment_SelectPlant(); // Fragment 객체 생성
fragmentManager.beginTransaction().add(R.id.main_frame,fa).commit(); // 앱 초기 화면을 fragment__select_plant.xml로 설정.
bottomNavigationView.setOnItemSelectedListener((BottomNavigationView.OnItemSelectedListener) menuItem -> {
if(menuItem.getItemId() == R.id.select_plants ) { //menuItem엔 각각의 Fragment를 지칭하는 Id를 가진 요소가 있음.
if (fa == null) {
fa = new Fragment_SelectPlant();
fragmentManager.beginTransaction().add(R.id.main_frame, fa).commit();
}
if (fa != null)
fragmentManager.beginTransaction().show(fa).commit();
if (fb != null)
fragmentManager.beginTransaction().hide(fb).commit();
}
else if(menuItem.getItemId() == R.id.watering){
if(fb == null) {
fb = new Fragment_Watering();
fragmentManager.beginTransaction().add(R.id.main_frame, fb).commit();
}
if(fb != null)
fragmentManager.beginTransaction().show(fb).commit();
if(fa != null)
fragmentManager.beginTransaction().hide(fa).commit();
}
return true;
});
上記のソースコードについては、まずアプリケーションの初期画面を表示するFragmentをFragment_SelectPlant
に設定します.次に、bottomNavigationView
のsetOnItemSelectedListener
では、ユーザが選択したメニュー項目と、分割項目が作成されたか否かに応じて、ケースを別々に作成する.上記のソースコードをより明確に理解するために、
FragmentTransaction
クラスの主な方法およびそれらの役割を以下の表に示す.⚌▼Fragment Transactionメソッド使用上の注意事項
最後に1.
commit()
に電話する必要があります.2.複数の分割を同じコンテンツに追加すると、追加の順序によってビューでの表示順序が決まります.
ここでは、MainActivityの上にある分割間を切り替える方法について説明します.次に、分割間でデータを転送する方法を見てみましょう.
🔜💬 Communicating Between Fragments
🔜🔁 Fragment Lifecycle
📄 References
🧭 Android開発者-developer.android.com
📖 高敦豪、『これがアンドロイドとコトリン』、韓光メディア(2020)、p 321-347.
Reference
この問題について(📱 Android Studio Series - Fragment), 我々は、より多くの情報をここで見つけました
https://velog.io/@kevinlsh17/Android-Studio-Fragment
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
📄 References
🧭 Android開発者-developer.android.com
📖 高敦豪、『これがアンドロイドとコトリン』、韓光メディア(2020)、p 321-347.
Reference
この問題について(📱 Android Studio Series - Fragment), 我々は、より多くの情報をここで見つけました
https://velog.io/@kevinlsh17/Android-Studio-Fragment
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
Reference
この問題について(📱 Android Studio Series - Fragment), 我々は、より多くの情報をここで見つけました https://velog.io/@kevinlsh17/Android-Studio-Fragmentテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol