android Fragment和Activity的通讯
来源:互联网 发布:北杉切削液淘宝有卖吗 编辑:程序博客网 时间:2024/06/05 03:43
好吧。简单地说。Fragment和Activity的通讯可以用到接口来实现。
在Fragment类中的点击事件中加入接口方法,然后在Activity中实现接口就可以了。
需要注意的一点就是Fragment类里面的接口。需要在 public void onAttach(Activity activity)中初始化。下面放上随便写写的代码。
这是布局,一个静态的Fragment,一个动态Fragment,Fragment布局就不放了。静态的里面有3个button,动态的有2个。都只有一个TextView而已
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" > <fragment android:id="@+id/fg_title" android:name="com.example.pictureshake.F_title" android:layout_width="wrap_content" android:layout_height="wrap_content"/> <FrameLayout android:id="@+id/fg_content" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_below="@id/fg_title"/></RelativeLayout>
public class F_title extends Fragment { Button btn, btn2, btn3; changeFragmet cf; @Override public void onAttach(Activity activity) { super.onAttach(activity); cf = (changeFragmet) activity; } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {View view = inflater.inflate(R.layout.f1, container, false);btn = (Button) view.findViewById(R.id.btn1);btn2 = (Button) view.findViewById(R.id.btn2);btn3 = (Button) view.findViewById(R.id.btn3);btn.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) {Toast.makeText(getActivity(), "~~~~~~~~~~~~~~~~~",Toast.LENGTH_SHORT).show();cf.change(1); }});btn2.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) {Toast.makeText(getActivity(), "~~~~~~~~~~~~~~~~~",Toast.LENGTH_SHORT).show(); }});btn3.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) {Toast.makeText(getActivity(), "~~~~~~~~~~~~~~~~~",Toast.LENGTH_SHORT).show(); }});return view; } public interface changeFragmet{void change(int index); }}
注意看接口就好。其他都没啥的
接下来就是主Activity的代码
public class FragmentTest extends Activity implements changeFragmet { F_content fc; FragmentManager fm = getFragmentManager(); FragmentTransaction ft = fm.beginTransaction(); @Override protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.fragment_main);fc = new F_content();DefaultFragment(); } @Override public void change(int index) {if (index == 1) { F_config ff = new F_config(); ft = fm.beginTransaction(); ft.replace(R.id.fg_content, new F_config()); ft.commit();} } @TargetApi(Build.VERSION_CODES.HONEYCOMB) @SuppressLint("NewApi") void DefaultFragment() {ft.add(R.id.fg_content, fc);ft.commit(); }}
要注意一点。每次commit之前。都需要重新赋值一个FragmentTransaction!!!!
好了就这么多,
0 0
- android Fragment和Activity的通讯
- Android Fragment和Activity互相通讯
- Android Fragment和Activity互相通讯
- Fragment和Activity通讯
- Android Fragment与Activity通讯
- Fragment 和 Activity 全通讯
- Android Fragment(四)---Fragment与Activity通讯
- Fragment与Activity的通讯
- Fragment与Activity的通讯
- Fragment和Activity间的通讯的实现
- android service和activity的通讯
- Fragment与Activity之间的通讯(解决Android中Fragment调用startactivityforresult不能返)
- Android Fragment详解(五):Fragment与Activity之间的通讯
- Android Activity和Fragment
- android Fragment和Activity
- Android Fragment 和 Activity
- Android Fragment和Activity
- **ANDROID** activity和Fragment
- cas单点登录
- Error: Could not find Bowtie 2 index files 可能是这里错了
- android Parcelable
- 2011清华集训.BZOJ2561 && THU A1277.最小生成树(最小割)
- C++两个类相互引用的问题
- android Fragment和Activity的通讯
- swift-控制流程02-while循环
- Oracle Study之--AIX install RAC运行root.sh(PRKR-1062)错误
- svn1.6项目还原到以前的版本
- Unix高级IO之IO复用———select函数
- 响应式编程:理解响应式编程
- php explode() 函数的基本语法及使用实例
- 类似QQ的窗口抖动效果
- Git学习笔记 (二)