欧美人两个人激情的免费视频_国产亚洲人成网站在线观看不卡_直接看毛片_免费乱理伦片在线观看app

十三年專注于網站建設與互聯網應用開發,低調、有情懷的網絡應用服務商!
南昌百恒科技微信公眾號 掃一掃關注
tel-icon全國服務熱線:400-680-9298,0791-88117053
掃一掃關注百恒科技微信公眾號

APP開發之附加argument給 fragment 的方法

百恒 2017-09-19 16:09:13 3421
? ? ? ?每個fragment實例都可附帶一個Bundle對象。該bundle包含有鍵值對,我們可以像附加extra 到Activity的intent中那樣使用它們。一個鍵值對即一個argument。?

? ? ? ?要創建fragment argument,首先需創建Bundle對象。然后使用Bundle限定類型的“put”方法,將argument添加到bundle中。那么具體如何操作呢?下面南昌APP開發公司小編就來為大家介紹一下,代碼如下:

? ? ? ?Bundle args = new Bundle();?
? ? ? ?args.putSerializable(EXTRA_MY_OBJECT, myObject);?
? ? ? ?args.putInt(EXTRA_MY_INT, myInt);?
? ? ? ?args.putCharSequence(EXTRA_MY_STRING, myString);

? ? ? ?要附加argument bundle給fragment,需調用Fragment.setArguments(Bundle)方法。而且,還必須在fragment創建后、添加給activity前完成。?

? ? ? ?為滿足以上要求,Android開發者采取的習慣做法是:添加名為newInstance()的靜態方法給Fragment類。使用該方法,完成fragment實例及bundle對象的創建,然后將argument放入bundle 中,后再附加給fragment。?

? ? ? ?托管activity需要fragment實例時,轉而調用newInstance()方法,而非直接調用其構造方法。而且,為滿足fragment創建argument的要求,activity可傳入任何需要的參數給newInstance()方法。?

? ? ? ?在CrimeFragment類中,編寫可以接受UUID參數的newInstance(UUID)方法,如下代碼所示。通過該方法,創建argument bundle和fragment實例,然后附加argument給fragment。?

? ? ? ?編寫newInstance(UUID)方法(CrimeFragment.java)?
? ? ? ?public class CrimeFragment extends Fragment { ??
? ? ? ?private static final String ARG_CRIME_ID = "crime_id"; ?

? ? ? ?private Crime mCrime; ? ??
? ? ? ?private EditText mTitleField; ? ??
? ? ? ?private Button mDateButton; ? ??
? ? ? ?private CheckBox mSolvedCheckbox; ?
? ??
? ? ? ?public static CrimeFragment newInstance(UUID crimeId) { ? ? ? ??
? ? ? ?Bundle args = new Bundle(); ? ? ? ??
? ? ? ?args.putSerializable(ARG_CRIME_ID, crimeId); ?
? ? ?
? ? ? ?CrimeFragment fragment = new CrimeFragment(); ? ? ? ??

? ? ? ?fragment.setArguments(args); ? ? ? ??

? ? ? ?return fragment; ? ??

? ? ? ?} ?
? ? ? ?... ?
? ? ? ?}?

? ? ? ?現在,需創建CrimeFragment時,CrimeActivity應調用CrimeFragment.newInstance(UUID) 方法,并傳入從它的extra中獲取的UUID參數值。回到CrimeActivity類中,在createFragment() 方法里,從CrimeActivity的intent中獲取extra數據,并傳入CrimeFragment.newInstance(UUID) 方法,如代碼清單1所示。?

? ? ? ?既然其他類不會用到EXTRA_CRIME_ID,可以將其改為私有。(注意,為了方便,我們直接刪除并替換了第一行,實際上只要改public為private就可以了。)?

? ? ? ?代碼清單1 ?使用newInstance(UUID)方法 (CrimeActivity.java)?
? ? ? ?public class CrimeActivity extends SingleFragmentActivity { ?
? ? ? ?public static final String EXTRA_CRIME_ID = "com.bignerdranch.android.criminalintent.crime_id"; ??
? ? ? ?private static final String EXTRA_CRIME_ID = "com.bignerdranch.android.criminalintent.crime_id";?
? ? ? ?... ?? ?
? ? ? ?@Override ? ??
? ? ? ?protected Fragment createFragment() { ? ? ? ?
? ? ? ?return new CrimeFragment(); ? ? ? ??
? ? ? ?UUID crimeId = (UUID) getIntent() ? ? ? ? ? ? ? ??
? ? ? ?.getSerializableExtra(EXTRA_CRIME_ID); ? ? ? ??
? ? ? ?return CrimeFragment.newInstance(crimeId); ? ??
? ? ? ?} ?
? ? ? ?}

? ? ? ?注意,activity和fragment不需要也無法同時相互保持獨立性。CrimeActivity必須了解 CrimeFragment的內部細節,比如知道它內部有個newInstance(UUID)方法。這很正常。托管 activity應該知道這些細節,以便托管fragment;但fragment就不一定要知道其托管activity的細節問題,至少在需要保持fragment通用獨立性的時候是如此。?

? ? ? ?以上便是南昌APP開發公司-百恒網絡為大家介紹的把argument附加給 fragment 的方法,希望對大家有所幫助。了解更多關于APP開發方面的知識,歡迎訪問公司官網!
400-680-9298,0791-88117053
掃一掃關注百恒網絡微信公眾號

歡迎您的光顧,我們將竭誠為您服務×

售前咨詢 售前咨詢
 
售前咨詢 售前咨詢
 
售前咨詢 售前咨詢
 
售前咨詢 售前咨詢
 
售前咨詢 售前咨詢
 
售后服務 售后服務
 
備案專線 備案專線
 
售后服務 售后服務
 
×