Develop--Training(八)Getting Started--用碎片来构建动态的UI
2016-01-20 00:04
751 查看
FragmentActivity 是一个特殊的 Activity,提供了支持库处理 Fragment 在系统版本低于 API 级别 11 的时候。如果你支持的最低系统版本的 API 级别是 11 或更高版本,那么你可以使用常规的的活动。
如果你使用的是 V7 appcompat 库,你的活动应继承 AppCompatActivity,它是 FragmentActivity 的子类。
Fragment 之间的数据通信,最好的话通过接口。定义一个接口,Activity 来实现这个接口,Fragment 来调用这个接口。
如果你使用的是 V7 appcompat 库,你的活动应继承 AppCompatActivity,它是 FragmentActivity 的子类。
// 布局添加 Fragment import android.os.Bundle; import android.support.v4.app.Fragment; import android.view.LayoutInflater; import android.view.ViewGroup; public class ArticleFragment extends Fragment { @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { // Inflate the layout for this fragment return inflater.inflate(R.layout.article_view, container, false); } } <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="fill_parent"> <fragment android:name="com.example.android.fragments.HeadlinesFragment" android:id="@+id/headlines_fragment" android:layout_weight="1" android:layout_width="0dp" android:layout_height="match_parent" /> <fragment android:name="com.example.android.fragments.ArticleFragment" android:id="@+id/article_fragment" android:layout_weight="2" android:layout_width="0dp" android:layout_height="match_parent" /> </LinearLayout> import android.os.Bundle; import android.support.v4.app.FragmentActivity; public class MainActivity extends FragmentActivity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.news_articles); } }
// 动态添加 Fragment <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/fragment_container" android:layout_width="match_parent" android:layout_height="match_parent" /> // 这是一个布局,这个容器是用来承载各种不同的 Fragment的 import android.os.Bundle; import android.support.v4.app.FragmentActivity; public class MainActivity extends FragmentActivity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.news_articles); // Check that the activity is using the layout version with the fragment_container FrameLayout if (findViewById(R.id.fragment_container) != null) { // However, if we're being restored from a previous state, then we don't need to do anything and should return or else we could end up with overlapping fragments. if (savedInstanceState != null) { return; } // Create a new Fragment to be placed in the activity layout HeadlinesFragment firstFragment = new HeadlinesFragment(); // In case this activity was started with special instructions from an Intent, pass the Intent's extras to the fragment as arguments firstFragment.setArguments(getIntent().getExtras()); // Add the fragment to the 'fragment_container' FrameLayout getSupportFragmentManager().beginTransaction() .add(R.id.fragment_container, firstFragment).commit(); } } } // 这是动态添加 Fragment,一定要开启一个事务,在所有操作完成之后,事务提交才能奏效。
Fragment 之间的数据通信,最好的话通过接口。定义一个接口,Activity 来实现这个接口,Fragment 来调用这个接口。
public class HeadlinesFragment extends ListFragment { OnHeadlineSelectedListener mCallback; // Container Activity must implement this interface public interface OnHeadlineSelectedListener { public void onArticleSelected(int position); } @Override public void onAttach(Activity activity) { super.onAttach(activity); try { mCallback = (OnHeadlineSelectedListener) activity; } catch (ClassCastException e) { throw new ClassCastException(activity.toString() + " must implement OnHeadlineSelectedListener"); } } ... } public static class MainActivity extends Activity implements HeadlinesFragment.OnHeadlineSelectedListener{ ... public void onArticleSelected(int position) { // Do something here to display that article } }
相关文章推荐
- iOS UITableView相关
- iOS UITextField相关
- iOS UISearchBar相关
- UIview画线
- hibernate4 获取SessionFactory
- Cannot build a 32-bit program, you need to install
- Divide and conquer:Telephone Lines(POJ 3662)
- MySQL表中存Emoji报错Error 1366: Incorrect string value的解决方法
- Java中String,StringBuffer,StringBuilder的区别
- JPA报错, PersistenceException_Unable to build Hibernate SessionFactory
- Gradle version 2.10 is required. Current version is 2.8
- Android6.0 SystemUI Keyguard 简介
- iOSUI-UIScrollView属性,方法大全
- Arduino接口-week2-Lesson3
- Flask Requests & 人人网Session
- android TV-Building a Details View,Displaying a Now Playing Card
- IOS UI-标签(Label)的高级应用
- Arduino接口-week2-Lesson2
- 1.19 Java总结 循环break continue
- bzoj1367: [Baltic2004]sequence