使用Fragment时如何获取控件Id以及如何跳转
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用Fragment时如何获取控件Id以及如何跳转相关的知识,希望对你有一定的参考价值。
参考技术A 一、使用Fragment获取控件Id我是在MainActivity中通过Fragment的事务管理把各个fragment添加到MainActivity中的,但是MainActivity中并没有很多控件,控件大都在各个fragment的布局里面,所以如何在fragmen中获取控件Id是一件非常重要的事!话不多说直接上代码!
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
View messageLayout=inflater.inflate(R.layout.message_layout,container,false); inspect= (TextView) messageLayout.findViewById(R.id.inspect); inspect.setOnClickListener(new View.OnClickListener()
在OncreatView方法中,先是通过View方法把布局加载到fragmnet中,然后在使用加载的布局中的findViewById的方法找到控件,这和之前的用法是不一样的,之前是直接findViewById。
二、如何在fragment中跳转Activity
话不多话,直接上代码!
Intent intent=new Intent(getActivity(),InspectActivity.class);startActivity(intent);
与平常跳转不同的地方在于这里是:
new Intent(getActivity(),InspectActivity.class);
安卓Fragment中的Button如何设置事件处理?
如果Fragment1里面有多个Button,要怎么为所有Button设置监听,当点击不同的Button时,跳转到相应的Fragment中去?
对Fragment1 里面的两个button定义接口
对应的Fragment2 和Fragment3 如下:
MainActivity实现了两个接口,回调如下
但程序运行时只对其中一个Button的点击有响应,要怎么修改呢?
首先,你需要重写Fragment类的onCreateView方法,并找到根View,因为你的按钮是属于根View的。然后对根View使用findViewById()方法找到按钮,并为按钮设置监听器。
最後,别忘记返回根View。
代码如下:
@Overridepublic View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
View rootView = inflater.inflate(R.layout.fragment, container, false);
Button button = (Button) rootView.findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener()
@Override
public void onClick(View view)
//处理监听事件
);
return rootView;
希望以上内容能帮助到您,满意请采纳,欢迎追问!
参考技术A Button的事件处理和Fragment没有关系.通常地 fragment做为宿主activity UI的一部分, 被作为activity整个view hierarchy的一部分被嵌入.
Button 的事件设置:
Button buttontest;
buttontest = (Button) findViewById(R.id.button1);
buttontest.setOnClickListener(new View.OnClickListener()
@Override
public void onClick(View v)
// TODO Auto-generated method stub
Log.i("TEST", "button onClick");
); 参考技术B 那是因为你的activity实现了两个接口,所以在onClick里面的判断就不会进到else里面吧,这样就只是onPhotoClick调用了,另外一个没有调用。追问
那请问怎么修改啊?..
追答你只要定义一个接口,Activity 实现这个接口
public interface OnButtonClickListenerpublic void onPhotoClick(View view);
public void onSettingBackClick(View view);
然后再fragment的button点击事件里面根据button的id来判断调用哪一个方法就好了
@Overridepublic void onClick(View view)
if(view.getId()==R.id.btn_photo)
if(getActivity() instanceof OnButtonClickListener)
((OnButtonClickListener)getActivity).onPhotoClick(view);
else if ……
本回答被提问者和网友采纳 参考技术C 那是因为你的activity实现了两个接口,所以在onClick里面的判断就不会进到else里面吧,这样就只是onPhotoClick调用了,另外一个没有调用。
以上是关于使用Fragment时如何获取控件Id以及如何跳转的主要内容,如果未能解决你的问题,请参考以下文章
android ViewPager+Fragment 如何在ViewPager的Activity中获取Fragment中的控件对象
单 Activity 多 Fragment 架构如何使用路由进行统一跳转