我有fragmentActivity类,它实现OnTabChangeListener并充当其他片段类的宿主。每个片段类都在不同的XML布局文件中定义,用于自己的布局。
我想从fragmentActivity类中的那个片段类中获取View。
我试过了:
View view = myFragment.getView();
Button myButton = (Button) view.findViewById(R.id.my_button);
myButton.setOnClickListener(new MyClickListener());
但似乎没有用。
所有人都知道吗?
答案 0 :(得分: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);
您将在接收活动的活动中收到此广播。做你想做的任何事。
答案 1 :(得分:-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());
}
}