Android 从FragmentActivity类内的fragment类获取视图

Android 从FragmentActivity类内的fragment类获取视图,android,tabs,android-view,android-fragmentactivity,Android,Tabs,Android View,Android Fragmentactivity,我有一个fragmentActivity类,它实现了OnTabChangeListener并充当其他片段类的宿主。每个片段类都是在不同的XML布局文件中为自己的布局定义的 我想从fragmentActivity类中的片段类获取视图 我试过: View view = myFragment.getView(); Button myButton = (Button) view.findViewById(R.id.my_button); myButton.setOnClickListener(new M

我有一个fragmentActivity类,它实现了OnTabChangeListener并充当其他片段类的宿主。每个片段类都是在不同的XML布局文件中为自己的布局定义的


我想从fragmentActivity类中的片段类获取视图

我试过:

View view = myFragment.getView();
Button myButton = (Button) view.findViewById(R.id.my_button);
myButton.setOnClickListener(new MyClickListener());
但似乎不起作用


那么有人知道吗?

如果您想访问组件并设置一些数据,我建议您在片段中创建一个如下所示的方法:

 import android.os.Bundle;
    import android.support.v4.app.Fragment;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.ViewGroup;
    import android.widget.Button;

    public class DetailFragment extends Fragment {

        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
            View view = inflater.inflate(R.layout.details, container, false);
            return view;
        }


        public void setSettings(){
            Button button = (Button) getView().findViewById(R.id.my_button);
            button.setOnClickListener(new MyClickListener());
        }

    }

如果需要,可以使用
broadcastReceiver
从片段向活动发送事件通知

要在
碎片活动中注册广播接收器,请执行以下操作:

public class MyActivity extends FragmentActivity {

    private BroadcastReceiver myBroadcastReceiver =
        new BroadcastReceiver() {
            @Override
            public void onReceive(...) {
                //YOU WILL RECEIVE YOUR BROADCAST HERE. WRITE YOUR CODE HERE TO ADD NEW TAB
            }
       });

    ...

    public void onResume() {
        super.onResume();
        ....
        registerReceiver(myBroadcastReceiver, intentFilter);
    }

    public void onPause() {
        super.onPause();
        ...
        unregisterReceiver(myBroadcastReceiver);
    }
    ...
}
Intent intent=new Intent();
intent.setAction("ANY_UNIQUE_NAME");
intent.putExtra("data",EXTRA_DATA_IF_YOU_WANT);
sendBroadcast(intent);
现在要从片段发送广播,请执行以下操作:

public class MyActivity extends FragmentActivity {

    private BroadcastReceiver myBroadcastReceiver =
        new BroadcastReceiver() {
            @Override
            public void onReceive(...) {
                //YOU WILL RECEIVE YOUR BROADCAST HERE. WRITE YOUR CODE HERE TO ADD NEW TAB
            }
       });

    ...

    public void onResume() {
        super.onResume();
        ....
        registerReceiver(myBroadcastReceiver, intentFilter);
    }

    public void onPause() {
        super.onPause();
        ...
        unregisterReceiver(myBroadcastReceiver);
    }
    ...
}
Intent intent=new Intent();
intent.setAction("ANY_UNIQUE_NAME");
intent.putExtra("data",EXTRA_DATA_IF_YOU_WANT);
sendBroadcast(intent);

您将在活动的on receive事件中接收此广播。做你想做的任何事情。

“我想从fragmentActivity类中的fragment类获取视图”为什么?是否要将某个内容从片段传递回活动?是的,我会这样做,因为我需要从片段类获取数据,然后我想在验证数据后创建一个新选项卡。使用接口与活动通信。检查与活动通信的主题添加一个从中复制此内容的链接,并将撤消my-1(提示:)