使用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。

代码如下:

@Override
public 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 OnButtonClickListener
    public void onPhotoClick(View view);
    public void onSettingBackClick(View view);

然后再fragment的button点击事件里面根据button的id来判断调用哪一个方法就好了

@Override
public 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以及如何跳转的主要内容,如果未能解决你的问题,请参考以下文章

如何从activity页面跳转到fragment页面

android ViewPager+Fragment 如何在ViewPager的Activity中获取Fragment中的控件对象

单 Activity 多 Fragment 架构如何使用路由进行统一跳转

vs2008 中 c#,asp.net 中做网页时,在用menu 控件实现页面跳转时,如何实现参数的传递

【急】C# Winform 如何由ID获取该控件

如何在一个fragment中更新另一个fragment