FragmentManager
要管理fragment们,需使用FragmentManager,
要获取它,需在activity中调用方法getFragmentManager()。
你可以用findFragmentById()或findFragmentByTag(),获取activity中已存在的fragment们。
要获取它,需在activity中调用方法getFragmentManager()。
執行Fragment 的事務
在activity 中使用fragment 的一個偉大的好處是
能跟據用戶的輸入對fragment 進行添加、刪除、替換以及執行其它動作的能力。
你提交的一組fragment 的變化叫做一個事務。事務通過FragmentTransaction 來執行
你可以通過FragmentManager 來取得FragmentTransaction 的實例,如下:
FragmentManager fragmentManager = getFragmentManager () ;
FragmentTransaction fragmentTransaction = fragmentManager . beginTransaction () ;
一個事務是在同一時刻執行的一組動作(很像數據庫中的事務)。
你可以用add(),remove(),replace() 等方法構成事務,最後使用commit() 方法提交事務。
在activity 中使用fragment 的一個偉大的好處是
能跟據用戶的輸入對fragment 進行添加、刪除、替換以及執行其它動作的能力。
你提交的一組fragment 的變化叫做一個事務。事務通過FragmentTransaction 來執行
能跟據用戶的輸入對fragment 進行添加、刪除、替換以及執行其它動作的能力。
你提交的一組fragment 的變化叫做一個事務。事務通過FragmentTransaction 來執行
你可以通過FragmentManager 來取得FragmentTransaction 的實例,如下:
FragmentManager fragmentManager = getFragmentManager () ;
FragmentTransaction fragmentTransaction = fragmentManager . beginTransaction () ;
FragmentTransaction fragmentTransaction = fragmentManager . beginTransaction () ;
一個事務是在同一時刻執行的一組動作(很像數據庫中的事務)。
你可以用add(),remove(),replace() 等方法構成事務,最後使用commit() 方法提交事務。Fragment子類別之DialogFragment
infor from : http://cheng-min-i-taiwan.blogspot.tw/2013/02/fragmentdialogfragment.html
在Fragment子類別中包括了 ListFragment 、DialogFragment、PreferenceFragment 及 WebViewFragment。
DialogFragment是一個浮動在Activity上對話框形的Fragment,它有著類似Dialog(對話框)同樣的功能,經常使用在與使用者互動的畫面上;例如輸入帳號密碼、問題訊問回答、...等詳見Dialogs官方網頁說明。
另外,在另一個Dialogs官網上有建議AlertDialog(告警、詢問)、DatePickerDialog (年、月、日)及 TimePickerDialog(時間)等對話框(Dialog)建議改採繼承 DialogFragment 方式完成。
實作環境:
Win 7 Sp1
Java version 1.6.0_35
Eclipse 3.7.2
ADT 20.0.1
ASUS Nexus 7 平板 (4.1.2)
HTC Sensation 手機 (4.0.3)
步驟:
1. 用Eclipse建立一個Android 3.x項目以上專案並命名為DialogFragmentExample
2. 在 res/layout中加入一個XML檔案並且將其命名為fragment1.xml,內容如下:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
</LinearLayout>
3. main.xml內容如下:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/hello" />
</LinearLayout>
4. 在src/ package目錄下增加 Fragment1.java,內容如下:
package net.learn2develop.DialogFragmentExample;
import android.app.AlertDialog;
import android.app.Dialog;
import android.app.DialogFragment;
import android.content.DialogInterface;
import android.os.Bundle;
public class Fragment1 extends DialogFragment {
//newInstance()方法和new關鍵字除了一個是方法,一個是關鍵字外,最主要有什麽區別?它們的區別在于創建對象的方式不一樣,前者是使用類加載機制,後者是創建一個新類//
DialogFragment是一個浮動在Activity上對話框形的Fragment,它有著類似Dialog(對話框)同樣的功能,經常使用在與使用者互動的畫面上;例如輸入帳號密碼、問題訊問回答、...等詳見Dialogs官方網頁說明。
另外,在另一個Dialogs官網上有建議AlertDialog(告警、詢問)、DatePickerDialog (年、月、日)及 TimePickerDialog(時間)等對話框(Dialog)建議改採繼承 DialogFragment 方式完成。
實作環境:
Win 7 Sp1
Java version 1.6.0_35
Eclipse 3.7.2
ADT 20.0.1
ASUS Nexus 7 平板 (4.1.2)
HTC Sensation 手機 (4.0.3)
步驟:
1. 用Eclipse建立一個Android 3.x項目以上專案並命名為DialogFragmentExample
2. 在 res/layout中加入一個XML檔案並且將其命名為fragment1.xml,內容如下:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
</LinearLayout>
3. main.xml內容如下:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/hello" />
</LinearLayout>
4. 在src/ package目錄下增加 Fragment1.java,內容如下:
package net.learn2develop.DialogFragmentExample;
import android.app.AlertDialog;
import android.app.Dialog;
import android.app.DialogFragment;
import android.content.DialogInterface;
import android.os.Bundle;
public class Fragment1 extends DialogFragment {
//newInstance()方法和new關鍵字除了一個是方法,一個是關鍵字外,最主要有什麽區別?它們的區別在于創建對象的方式不一樣,前者是使用類加載機制,後者是創建一個新類//
static Fragment1 newInstance(String title) {
Fragment1 fragment = new Fragment1();
Bundle args = new Bundle();
args.putString("title", title);
fragment.setArguments(args);
return fragment;
}
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
String title = getArguments().getString("title");
return new AlertDialog.Builder(getActivity()).setIcon(R.drawable.icon).setTitle(title)
.setPositiveButton("是", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
((MainActivity) getActivity()).doPositiveClick();
}
}).setNegativeButton("不", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
((MainActivity) getActivity()).doNegativeClick();
}
}).create();
}
}
5. MainActivity內容如下:
package net.learn2develop.DialogFragmentExample;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
public class MainActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Fragment1 dialogFragment = Fragment1.newInstance("您是南開數創系的學生嗎?");
dialogFragment.show(getFragmentManager(), "dialog");
}
public void doPositiveClick() {
// ---perform steps when user clicks on OK---
Log.i("DialogFragmentExample", "是,我是南開數創系的學生!!");
}
public void doNegativeClick() {
// ---perform steps when user clicks on Cancel---
Log.i("DialogFragmentExample ", "不,我不是南開數創系的學生!!");
}
}
6. AndroidManifest.xml保持預設。
執行結果:
程式執行時會出現一個詢問對話框,當回答是/否後觀察DDMS上的Log會有不同的紀錄。
沒有留言:
張貼留言