0

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

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

我努力了 :

View view = myFragment.getView();
Button myButton = (Button) view.findViewById(R.id.my_button);
myButton.setOnClickListener(new MyClickListener());

但似乎不起作用。

那么有人知道吗?

4

2 回答 2

2

如果您愿意,您可以使用BroadcastReciver从片段向您的活动发送事件通知。

要注册广播接收器,请FragmentActivity执行以下操作:

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);

您将在活动的接收事件中收到此广播。在那里做任何你想做的事。

于 2013-10-04T08:22:19.047 回答
-1

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

 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());
        }

    }
于 2013-10-04T08:03:43.687 回答