fragment获取控件怎么获取到activity中的控件

在activity中加载fragment的两个方式以及获取fragment中的控件的方式
在activity中加载fragment的两个方式以及获取fragment中的控件的方式
public class MainActivity extends Activity {
Button show ,show2;
FragmentManager fragmentM
FragmentTransaction fragmentT
MySecondFragm
//fragment的加载可以使用id来加载,也可以使用tag来加载,在xml中给fragment中加一个tag,然后在fragmentManager.findFragmentByTag(tag)来找到。
//fragment中的button可以使用fragment的方法fragment.getView().findViewById(id)来获取fragment中的控件。
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.main_activity);
fragment = new MyFragment();
mysecondfragment=new &MySecondFragment();
show = (Button) findViewById(R.id.click);
show2 = (Button) findViewById(R.id.click2);
show.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
fragmentManager = getFragmentManager();
fragmentTransaction = fragmentManager.beginTransaction();
fragmentTransaction.add(R.id.right, fragment);
show2.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
fragmentManager = getFragmentManager();
fragmentTransaction = fragmentManager.beginTransaction(); & //开启事物
fragmentTransaction.replace(R.id.right, mysecondfragment);
</mit(); & & & & & & & & & & & & & & & //提交事物
我的热门文章
即使是一小步也想与你分享Fragment中获取Activity的Context-中国学网-中国IT综合门户网站-提供健康,养生,留学,移民,创业,汽车等信息
Fragment中获取Activity的Context
来源:互联网 更新时间: 9:39:38 责任编辑:李志喜字体:
&Fragment中获取Activity的Context时只需要this.getActivity()即可.
相关文章:
<a href="/cse/search?q=<inputclass="s-btn"type="submit"text="<inputclass="s-btn"type="submit"text="<buttonhidefocusclass="s-btnjs-ask-btn"text="我要提问
<a href="/cse/search?q=android中fragment与activity之间通信原理以及例子
android中fragment与activity之间通信原理以及例子
摘要 首先,如果你想在android3.0及以下版本使用fragment,你必须引用android-support-v4.jar这个包 然后你写的activity不能再继承自Activity类了,而是要继承android.support.v4.app.FragmentActivity,一些其他的父类也有相应的变化. 由于在android的实现机制中frag
首先,如果你想在android3.0及以下版本使用fragment,你必须引用android-support-v4.jar这个包然后你写的activity不能再继承自Activity类了,而是要继承android.support.v4.app.FragmentActivity,一些其他的父类也有相应的变化.由于在android的实现机制中fragment和activity会被分别实例化为两个不相干的对象,他们之间的联系由activity的一个成员对象fragmentmanager来维护.fragment实例化后会到activity中的fragmentmanager去注册一下,这个动作封装在fragment对象的onAttach中,所以你可以在fragment中声明一些回调接口,当fragment调用onAttach时,将这些回调接口实例化,这样fragment就能调用各个activity的成员函数了,当然activity必须implements这些接口,否则会包classcasterrorfragment和activity的回调机制又是OOP的一次完美演绎!下面通过一个例子来说明:&我把Activity的UI分为两个部分,左边和右边,左边用来放置点击的按钮(LeftFragment),右边用来放置对应点击后显示的信息(RightFragment).Activity的布局layout文件:main.xml&1234567891011121314151617181920212223&?xml version="1.0" encoding="utf-8"?& &LinearLayout xmlns:android=""&&&&android:layout_width="fill_parent"&&&&android:layout_height="fill_parent"&&&&android:orientation="horizontal" & &&&&&&&&LinearLayout &&&&&&&&android:id="@+id/left_layout"&&&&&&&&android:layout_width="wrap_content"&&&&&&&&android:layout_height="fill_parent"&&&&&&&&android:layout_weight="1"&&&&&&&&android:orientation="vertical" & &&&&&/LinearLayout& &&&&&&&&LinearLayout &&&&&&&&android:id="@+id/right_layout"&&&&&&&&android:layout_width="wrap_content"&&&&&&&&android:layout_height="fill_parent"&&&&&&&&android:layout_weight="10"&&&&&&&&android:orientation="vertical" & &&&&&/LinearLayout& &&&&/LinearLayout&LeftFragment的布局layout:leftfragment.xml12345678910111213141516171819202122232425&?xml version="1.0" encoding="utf-8"?& &LinearLayout xmlns:android=""&&&&android:layout_width="match_parent"&&&&android:layout_height="match_parent"&&&&android:orientation="vertical" & &&&&&&&&Button &&&&&&&&android:id="@+id/first_button"&&&&&&&&android:layout_width="fill_parent"&&&&&&&&android:layout_height="wrap_content"&&&&&&&&android:text="@string/first_button" /& &&&&&&&&Button &&&&&&&&android:id="@+id/second_button"&&&&&&&&android:layout_width="fill_parent"&&&&&&&&android:layout_height="wrap_content"&&&&&&&&android:text="@string/second_button" /& &&&&&&&&Button &&&&&&&&android:id="@+id/third_button"&&&&&&&&android:layout_width="fill_parent"&&&&&&&&android:layout_height="wrap_content"&&&&&&&&android:text="@string/third_button" /& &&&&/LinearLayout&RightFragment的布局layout:rightfragment.xml1234567891011121314&?xml version="1.0" encoding="utf-8"?& &LinearLayout xmlns:android=""&&&&android:layout_width="match_parent"&&&&android:layout_height="match_parent"&&&&android:orientation="vertical" & &&&&&&&&TextView &&&&&&&&android:id="@+id/right_show_message"&&&&&&&&android:layout_width="fill_parent"&&&&&&&&android:layout_height="fill_parent"&&&&&&&&android:background="@android:color/holo_orange_dark"&&&&&&&&android:textColor="@android:color/white" /& &&&&/LinearLayout&以上是两个fragment和一个Activity的布局文件,下面来看他们的java文件 Activity: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748public class FirstActivity extends Activity implements MyListener { &&&&/** &&&&&* 实现MyListener,当LeftFragment中点击第一页的时候,让RightFragment显示第一页信息,同理当点击第二页的时候,RightFragment显示第二页信息 &&&&&*& &&&&&* @param index &&&&&*&&&&&&&&&&& 显示的页数 &&&&&*/&&&&public void showMessage(int index) &&&&{ &&&&&&&&if (1 == index) &&&&&&&&&&&&showMessageView.setText(R.string.first_page); &&&&&&&&if (2 == index) &&&&&&&&&&&&showMessageView.setText(R.string.second_page); &&&&&&&&if (3 == index) &&&&&&&&&&&&showMessageView.setText(R.string.third_page); &&&&} &&&&&&&/** 得到RightFragment中显示信息的控件 */&&&&private TextView showMessageV &&&&&&&/** Called when the activity is first created. */&&&&@Override &&&&public void onCreate(Bundle savedInstanceState) &&&&{ &&&&&&&&super.onCreate(savedInstanceState); &&&&&&&&setContentView(R.layout.main); &&&&&&&&System.out.println("Activity---&onCreate"); &&&&&&&&&&&FragmentManager manager = getFragmentManager(); &&&&&&&&FragmentTransaction transaction = manager.beginTransaction(); &&&&&&&&// 动态增加Fragment &&&&&&&&RightFragment rightFragment = new RightFragment(); &&&&&&&&LeftFragment leftFragment = new LeftFragment(); &&&&&&&&transaction.add(R.id.left_layout, leftFragment, "leftfragment"); &&&&&&&&transaction.add(R.id.right_layout, rightFragment, "rightfragment"); &&&&&&&&<mit(); &&&&&&&} &&&&&&&@Override &&&&protected void onResume() &&&&{ &&&&&&&&super.onResume(); &&&&&&&&System.out.println("Activity---&onResume"); &&&&&&&&showMessageView = (TextView) findViewById(R.id.right_show_message); &&&&} }LeftFragment:1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768public class LeftFragment extends Fragment { &&&&/** Acitivity要实现这个接口,这样Fragment和Activity就可以共享事件触发的资源了 */&&&&public interface MyListener &&&&{ &&&&&&&&public void showMessage(int index); &&&&} &&&&&&&private MyListener myL &&&&private Button firstB &&&&private Button secondB &&&&private Button thirdB &&&&&&&/** Fragment第一次附属于Activity时调用,在onCreate之前调用 */&&&&@Override &&&&public void onAttach(Activity activity) &&&&{ &&&&&&&&super.onAttach(activity); &&&&&&&&System.out.println("LeftFragment---&onAttach"); &&&&&&&&&&&myListener = (MyListener) &&&&} &&&&&&&@Override &&&&public void onCreate(Bundle savedInstanceState) &&&&{ &&&&&&&&super.onCreate(savedInstanceState); &&&&&&&&System.out.println("LeftFragment---&onCreate"); &&&&} &&&&&&&@Override &&&&public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) &&&&{ &&&&&&&&System.out.println("LeftFragment---&onCreateView"); &&&&&&&&return inflater.inflate(R.layout.leftfragment, container, false); &&&&} &&&&&&&@Override &&&&public void onResume() &&&&{ &&&&&&&&super.onResume(); &&&&&&&&System.out.println("LeftFragment---&onResume"); &&&&&&&&&&&firstButton = (Button) getActivity().findViewById(R.id.first_button); &&&&&&&&secondButton = (Button) getActivity().findViewById(R.id.second_button); &&&&&&&&thirdButton = (Button) getActivity().findViewById(R.id.third_button); &&&&&&&&&&&MyButtonClickListener clickListener = new MyButtonClickListener(); &&&&&&&&firstButton.setOnClickListener(clickListener); &&&&&&&&secondButton.setOnClickListener(clickListener); &&&&&&&&thirdButton.setOnClickListener(clickListener); &&&&} &&&&&&&/** 按钮的监听器 */&&&&class MyButtonClickListener implements OnClickListener &&&&{ &&&&&&&&public void onClick(View v) &&&&&&&&{ &&&&&&&&&&&&Button button = (Button) &&&&&&&&&&&&if (button == firstButton) &&&&&&&&&&&&&&&&myListener.showMessage(1); &&&&&&&&&&&&if (button == secondButton) &&&&&&&&&&&&&&&&myListener.showMessage(2); &&&&&&&&&&&&if (button == thirdButton) &&&&&&&&&&&&&&&&myListener.showMessage(3); &&&&&&&&} &&&&} }RightFragment:12345678910111213141516public class RightFragment extends Fragment { &&&&@Override &&&&public void onCreate(Bundle savedInstanceState) &&&&{ &&&&&&&&System.out.println("RightFragment---&onCreate"); &&&&&&&&super.onCreate(savedInstanceState); &&&&} &&&&&&&@Override &&&&public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) &&&&{ &&&&&&&&System.out.println("RightFragment---&onCreateView"); &&&&&&&&return inflater.inflate(R.layout.rightfragment, container, false); &&&&} }注意,Fragment的生命周期和Activity生命周期之间的关系。在Activity里动态生成Fragment,首先是Activity调用onCreate()方法,但是这时候还没有加载到Fragment里的组件,当Fragment调用其onCreateView()方法后,Activity才能得到Fragment中的组件&&&这里最关键的就是Fragment要有一个接口和这个接口的引用,而这个接口需要Activity去实现它。当Fragment调用onAttach(Activity acitivity)方法的时候,将这个activity传递给这个接口引用,这样,就可以和Activity进行交互了.&
发表评论:
TA的最新馆藏&&国之画&&&& &&
版权所有 京ICP备号-2
迷上了代码!如何在activity中获取viewpager中fragment里的组件?
[问题点数:40分,结帖人wbz810]
如何在activity中获取viewpager中fragment里的组件?
[问题点数:40分,结帖人wbz810]
不显示删除回复
显示所有回复
显示星级回复
显示得分回复
只显示楼主
匿名用户不能发表回复!|
每天回帖即可获得10分可用分!小技巧:
你还可以输入10000个字符
(Ctrl+Enter)
请遵守CSDN,不得违反国家法律法规。
转载文章请注明出自“CSDN(www.csdn.net)”。如是商业用途请联系原作者。

我要回帖

更多关于 fragment获取父控件 的文章

 

随机推荐