Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
深入淺出談fragment
Search
fantasy
January 30, 2015
Programming
0
98
深入淺出談fragment
有基本知識來介紹frgament元件,到要如何使用fragment,以及需要注意的地方。
fantasy
January 30, 2015
Tweet
Share
More Decks by fantasy
See All by fantasy
Use multi Analytics and Crashlytic smothly
fantasy1022
0
63
Exploring RxJava2
fantasy1022
0
65
Other Decks in Programming
See All in Programming
RubyとGoでゼロから作る証券システム: 高信頼性が求められるシステムのコードの外側にある設計と運用のリアル
free_world21
0
300
AI時代のソフトウェア開発でも「人が仕様を書く」から始めよう-医療IT現場での実践とこれから
koukimiura
0
150
LangChain4jとは一味違うLangChain4j-CDI
kazumura
1
190
ふつうのRubyist、ちいさなデバイス、大きな一年 / Ordinary Rubyists, Tiny Devices, Big Year
chobishiba
1
460
野球解説AI Agentを開発してみた - 2026/02/27 LayerX社内LT会資料
shinyorke
PRO
0
320
Cyrius ーLinux非依存にコンテナをネイティブ実行する専用OSー
n4mlz
0
150
守る「だけ」の優しいEMを抜けて、 事業とチームを両方見る視点を身につけた話
maroon8021
3
980
脱 雰囲気実装!AgentCoreを良い感じにWEBアプリケーションに組み込むために
takuyay0ne
1
110
ふつうの Rubyist、ちいさなデバイス、大きな一年
bash0c7
0
970
受け入れテスト駆動開発(ATDD)×AI駆動開発 AI時代のATDDの取り組み方を考える
kztakasaki
2
590
CDIの誤解しがちな仕様とその対処TIPS
futokiyo
0
220
CSC307 Lecture 14
javiergs
PRO
0
470
Featured
See All Featured
Principles of Awesome APIs and How to Build Them.
keavy
128
17k
Optimising Largest Contentful Paint
csswizardry
37
3.6k
How to audit for AI Accessibility on your Front & Back End
davetheseo
0
210
First, design no harm
axbom
PRO
2
1.1k
Unsuck your backbone
ammeep
672
58k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.7k
Producing Creativity
orderedlist
PRO
348
40k
Building AI with AI
inesmontani
PRO
1
800
We Analyzed 250 Million AI Search Results: Here's What I Found
joshbly
1
980
Mozcon NYC 2025: Stop Losing SEO Traffic
samtorres
0
180
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
26
3.4k
Impact Scores and Hybrid Strategies: The future of link building
tamaranovitovic
0
230
Transcript
Easy to understand Fragment
What is fragment? Is it another type of Activity? Does
it replace Activity? Or is it a new component ?
What is fragment? Is it another type of Activity? Does
it replace Activity? Or is it a new component ? It is a modular section of an activity!!
Relationship with Activity Embedded in an activity surely Depend on
activity lifecycle Inside activity’s view hierarchy
Fragment advantage Multi-pane UI support Reuse component Add or remove
component dynamically
When to use fragment
Multi-pane UI support
None
None
None
None
None
How to use fragment 1 <fragment 2 android:id="@+id/list" 3 android:name=“com.new.ExampleFragment"
4 android:layout_width="match_parent" 5 android:layout_height="match_parent" /> Inside the activity’s layout
Add fragment programmatically 1 FragmentManager fm = getFragmentManager(); 2 FragmentTransaction
ft = fm.beginTransaction(); 3 ExampleFragment fragment = new ExampleFragment(); 4 ft.add(R.id.fragment_container, fragment); 5 ft.commit(); 1 <FrameLayout 2 android:id="@+id/fragment_container" 3 android:layout_width="wrap_content" 4 android:layout_height=“wrap_content"/>
Fragment Transactions 1 FragmentTransaction ft = fm.beginTransaction(); 2 ft.add(R.id.fragment_container, fragment);
3 ft.replace(R.id.fragment_container, fragment); Modify fragment 4 ft.show(fragment) 5 ft.hide(fragment) 6 ft.remove(fragment) Modify fragment already in activity Set transition style 7 ft.setTransition(TRANSIT_FRAGMENT_CLOSE) 8 ft.setCustomAnimations(entet,exit)
Fragment Communication Just like activity communication directly?
Fragment Communication Just like activity communication directly? Communicate through activity
!
Main Activity fragment Controller
Main Activity fragment Controller
1 public class ChannelDetailFragment extends Fragment { 2 private OnChannelClickListener
mCallback; 3 4 public interface OnChannelClickListener { 5 public void onChannelClick(int channelNumber); 6 } 7 @Override 8 public void onAttach(Activity activity) { 9 super.onAttach(activity); 10 try { 11 mCallback = (OnChannelClickListener) activity; 12 } catch (ClassCastException e) { 13 throw new ClassCastException(activity.toString() 14 + " must implement OnChannelClickListener"); 15 } 16 } 17 public boolean onClick(View v) { 18 mCallback.onChannelClick(channelNumber); 19 } In fragment file
In activity file 1 public class Activity extends Activity 2
implements OnChannelClickListener { 3 4 @Override 5 public void onChannelClick(int channelNumber){ 6 // do something or open another fragment. 7 } 8 }
Fragment view Use setContentView() to set view?
Fragment view Use setContentView() to set view? 1 @Override 2
public View onCreateView(LayoutInflater inflater, ViewGroup 3 container, Bundle savedInstanceState) { 4 View root = inflater.inflate(R.layout.fragment_layout, 5 container, false); 6 //init other view 7 return root; 8 } Use onCreateView callback to set view !
Fragment tips Toast.makeText(getActivity(), "Mission complete", Toast.LENGTH_LONG); Get context from activity
Add to BackStack 1 FragmentManager fm = getFragmentManager(); 2 FragmentTransaction ft = fm.beginTransaction(); 3 ft.replace(R.id.fragment_container, fragment); 4 ft.addToBackStack(null);
Import v4 or origin version 1 import android.support.v4.app.FragmentActivity; 2 import
android.support.v4.app.FragmentManager; 3 import android.support.v4.app.FragmentTransaction; 4 import android.support.v4.app.Fragment; 1 import android.app.Activity; 2 import android.app.FragmentManager; 3 import android.app.FragmentTransaction; 4 import android.app.Fragment;
Use new Fragment() or Fragment.newInstance()? 1 ChannelFragment fragment = new
ChannelFragment(); 2 Bundle args = new Bundle(); 3 args.putInt(CHANNEL_PAGE_INDEX, index); 4 fragment.setArguments(args);
1 public static ChannelFragment newInstance(int index) { 2 ChannelFragment fragment
= new ChannelFragment(); 3 Bundle args = new Bundle(); 4 args.putInt(CHANNEL_PAGE_INDEX, index); 5 fragment.setArguments(args); 6 return fragment; 7 } ChannelFragment.newInstance(index); Use static factory method for better!
Thank you! Fantasy