android-fragments Handledning
Komma igång med androidfragment
Sök…
Anmärkningar
Fragment är mycket viktiga komponenter i användargränssnittet i Android-appar. De introducerades först i Android 3.0 (Honeycomb) API.
Att förstå designparadigmet för fragment
Fragment infördes för att främst stödja modulär och flexibel användargränssnitt på storskärmsenheter såsom tabletter.
Fragment hanteras av en aktivitet. Vanligtvis representerar varje fragment en del av en skärm. Det kan finnas mer än ett fragment i en aktivitet. Fragment kan också kallas underaktiviteter . När du lägger till ett fragment som en del av din aktivitetslayout lever det i en ViewGroup i aktivitetens visningshierarki och fragmentet definierar sin egen vylayout.
LIVSCYKEL
Precis som en aktivitet har fragment också en livscykel. Ett fragment meddelas för följande händelser.
- Bli knuten till aktivitet - onAttach (Aktivitet)
- Skapa fragment - onCreate (Bundle)
- Skapa vy - onCreateView (LayoutInflater, ViewGroup, Bundle)
- Aktivitetsskapande - onActivityCreated (Bundle)
- Visa tillstånd återställt - onViewStateRestored (Bundle)
- Synliggjort för användaren - onStart ()
- början på användarinteraktion - onResume ()
- paus för användarinteraktion - onPause ()
- Gjord osynlig för användaren - onStop ()
- På förstörelse av synen - onDestroyView ()
- Destroy fragment - onDestroy ()
- Lös dig loss från en aktivitet - onDetach ()
Som programmerare bör du åsidosätta olika återuppringningsmetoder för livscykeln, vanligtvis implementerar vi onCreate (), onCreateView () och onPause () metoder.
Underklasser av fragment
- DialogFragment - För att visa den flytande dialogen
- ListFragment - För att visa en lista med objekt
- PreferenceFragment - användbart för att skapa inställningsaktivitet
referenser
Lägga till fragment
Lägga till ett fragment statiskt
Fil: Activity_main.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<fragment
android:id="@+id/fragment2"
android:name="com.example.fragmentexample.Fragment2"
android:layout_width="0px"
android:layout_height="match_parent"
android:layout_weight="1"
/>
<fragment
android:id="@+id/fragment1"
android:name="com.example.fragmentexample.Fragment1"
android:layout_width="0px"
android:layout_height="match_parent"
android:layout_weight="1"
/>
</LinearLayout>
Fil: fragment1.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:background="#00ff00"
>
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="fragment frist"
android:textAppearance="?android:attr/textAppearanceLarge" />
</LinearLayout>
Fil: fragment2.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:background="#0000ff"
>
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Second Fragment"
android:textAppearance="?android:attr/textAppearanceLarge" />
</LinearLayout>
Fil: MainActivity.java
package com.example.fragmentexample;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
}
Fil: Fragment1.java
package com.example.fragmentexample;
import android.app.Fragment;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
public class Fragment1 extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// TODO Auto-generated method stub
return inflater.inflate(R.layout.fragment1,container, false);
}
}
Fil: Fragment2.java
package com.example.fragmentexample;
import android.app.Fragment;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
public class Fragment2 extends Fragment {
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// TODO Auto-generated method stub
return inflater.inflate(R.layout.fragment2,container, false);
}
}
Lägga till ett fragment dynamiskt
activity_main.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<FrameLayout
android:id="@+id/container1"
android:layout_width="0px"
android:layout_height="match_parent"
android:layout_weight="1"
/>
<FrameLayout
android:id="@+id/container2"
android:layout_width="0px"
android:layout_height="match_parent"
android:layout_weight="1"
/>
</LinearLayout>
FrameLayout fungerar som fragmentbehållare.
MainActivity klass
Fil: MainActivity.java
package com.example.fragmentexample;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
loadFragment(this, R.id.container1,new Fragment1(),"fragment1");
loadFragment(this, R.id.container2,new Fragment2(),"fragment2");
}
public static void loadFragment(Activity activity, int containerId, Fragment fragment, String tag)
{
activity.getSupportFragmentManager().beginTransaction().
replace(containerId, fragment,tag).commitAllowingStateLoss();
}
}