14 fragment传值
来源:互联网 发布:ipv6 无网络访问权限 编辑:程序博客网 时间:2024/06/06 14:25
两个fragment传值
方式一
布局文件代码:
<LinearLayout 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" android:orientation="horizontal" tools:context=".MainActivity" > <!-- 静态 必须要写ID--> <fragment android:id="@+id/fragment1" android:name="com.qf.day14_fragment_4.fragment.MyFragment1" android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="1" /> <View android:layout_width="1dp" android:layout_height="match_parent" android:background="#0f0" /> <!-- 动态 --> <LinearLayout android:id="@+id/ll_fragment_id" android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="1" android:orientation="horizontal" /></LinearLayout>
布局文件逻辑代码:
package com.qf.day14_fragment_4;import com.qf.day14_fragment_4.fragment.MyFragment2;import android.os.Bundle;import android.app.Activity;import android.app.FragmentManager;import android.app.FragmentTransaction;import android.view.Menu;public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //管理者对象 FragmentManager manager = getFragmentManager(); FragmentTransaction transaction = manager.beginTransaction(); MyFragment2 myFragment2 = new MyFragment2(); transaction.replace(R.id.ll_fragment_id,myFragment2); transaction.commit(); } @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.main, menu); return true; }}
其中一个fragment逻辑代码:
package com.qf.day14_fragment_4.fragment;import android.app.Fragment;import android.app.FragmentManager;import android.app.FragmentTransaction;import android.os.Bundle;import android.view.LayoutInflater;import android.view.View;import android.view.View.OnClickListener;import android.view.ViewGroup;import android.widget.Button;import com.qf.day14_fragment_4.R;public class MyFragment1 extends Fragment{ private Button btn; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { // TODO Auto-generated method stub View v = inflater.inflate(R.layout.fragment1_layout, container, false); btn = (Button) v.findViewById(R.id.btn); //点击按钮传值 btn.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub //管理者对象 FragmentManager manager = getFragmentManager(); FragmentTransaction transaction = manager.beginTransaction(); MyFragment2 myFragment2 = new MyFragment2(); Bundle bundle = new Bundle(); bundle.putString("msg", "左边Fragment向右边Fragment传值"); myFragment2.setArguments(bundle); transaction.replace(R.id.ll_fragment_id, myFragment2); transaction.commit(); } }); return v; }}
方式二 前提:必须两个静态fragment
界面xml代码:
<LinearLayout 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" android:orientation="horizontal" tools:context=".MainActivity" > <fragment android:id="@+id/leftfragment" android:name="com.qf.day14_fragment_demo5.fragment.Fragment1" android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="1" /> <View android:layout_width="1dp" android:layout_height="match_parent" android:background="#00f" /> <fragment android:id="@+id/rightfragment" android:name="com.qf.day14_fragment_demo5.fragment.Fragment2" android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="1" /></LinearLayout>
其中核心fragment代码
package com.qf.day14_fragment_demo5.fragment;import android.app.Fragment;import android.os.Bundle;import android.view.LayoutInflater;import android.view.View;import android.view.View.OnClickListener;import android.view.ViewGroup;import android.widget.Button;import android.widget.EditText;import android.widget.TextView;import com.qf.day14_fragment_demo5.R;public class Fragment1 extends Fragment{ private EditText etContent; private Button btnSend; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { // TODO Auto-generated method stub View view = inflater.inflate(R.layout.layout01, container, false); etContent = (EditText) view.findViewById(R.id.et_content); btnSend = (Button) view.findViewById(R.id.btn_send); btnSend.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub String msg = etContent.getText().toString().trim(); //通过Fragment的id 获取Fragment2的对象// Fragment2 fragment2 = (Fragment2) getFragmentManager().findFragmentById(R.id.rightfragment);// fragment2.setTextValues(msg); //TextView tv = (TextView) getFragmentManager().findFragmentById(R.id.rightfragment).getView().findViewById(R.id.tv_show); TextView tv = (TextView) getActivity().findViewById(R.id.tv_show); tv.setText(msg); } }); return view; }}
fragment给界面传值(Activity) 接口回调
界面代码
package com.qf.day14_fragment_demo3;import com.qf.day14_fragment_demo3.callback1.CallBackValue;import android.os.Bundle;import android.annotation.SuppressLint;import android.app.Activity;import android.app.FragmentManager;import android.app.FragmentTransaction;import android.view.Menu;import android.widget.TextView;public class MainActivity extends Activity implements CallBackValue{ private TextView tv; @SuppressLint("NewApi") @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); tv = (TextView) findViewById(R.id.tv); FragmentManager manager = getFragmentManager(); FragmentTransaction transaction = manager.beginTransaction(); transaction.replace(R.id.ll_fragment_id, new MyFragment()); transaction.commit(); } //回调接口的方法 @Override public void sendMessage(String msg) { // TODO Auto-generated method stub tv.setText(msg); }}
接口代码
package com.qf.day14_fragment_demo3.callback1;public interface CallBackValue { public void sendMessage(String msg);}
fragment代码
package com.qf.day14_fragment_demo3;import com.qf.day14_fragment_demo3.callback1.CallBackValue;import android.annotation.SuppressLint;import android.app.Activity;import android.app.Fragment;import android.os.Bundle;import android.view.LayoutInflater;import android.view.View;import android.view.View.OnClickListener;import android.view.ViewGroup;import android.widget.Button;import android.widget.EditText;@SuppressLint("NewApi")public class MyFragment extends Fragment{ CallBackValue callBackValue; private EditText et; private Button btnFTA; /** * 与Activity第一次链接是调用 */ @Override public void onAttach(Activity activity) { // TODO Auto-generated method stub super.onAttach(activity); //Fragment归属的Activity是getActivity callBackValue = (CallBackValue) getActivity(); } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { // TODO Auto-generated method stub View v = inflater.inflate(R.layout.fragment_layout, container,false); et = (EditText) v.findViewById(R.id.et); btnFTA = (Button) v.findViewById(R.id.btn_FTA); btnFTA.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub //将值传给Activity String msg = et.getText().toString().trim(); callBackValue.sendMessage(msg); } }); return v; }}
fragment 获取 界面数据(Activity)
- 可以fragment中直接getActivity 或者getContext 获取其对象
- 或者动态创建时用setAgunment 在fragment中getAgument
0 0
- 14 fragment传值
- Fragment之间Fragment传值
- fragment给fragment传值
- fragment与fragment,activity与fragment传值
- Fragment传值
- Fragment传值
- Fragment传值
- Fragment传值
- Fragment传值
- fragment传值
- 14、Fragment
- Fragment向Fragment传值(第一种)
- Fragment向Fragment传值(第二种)
- Fragment向Fragment传值(第三种)
- fragment改viewpager中各个fragment传值
- 简单的Fragment与Fragment传值
- Android fragment 传值
- activity向Fragment传值
- Bmob 初始化 程序停止运行解决方法
- linux设备驱动模型 之driver(驱动)原理与实例分析
- 专访吕毅:链家网技术架构的演进之路
- zookeeper学习资料
- 算法-树(1)—BST(二叉搜索树)
- 14 fragment传值
- 真分数转埃及分数的和 (贪心)
- Eclipse运行不了的常见问题及解决方案
- matplotlib.pyplot入门
- 【编程素质】MVC和三层架构
- 图像校正—透视变换
- Object-C学习笔记:解构Hello Object-C程序
- 求解汉诺塔问题
- Bootstrap---面包屑导航,分页