Android 从FragmentActivity类内的fragment类获取视图
我有一个fragmentActivity类,它实现了OnTabChangeListener并充当其他片段类的宿主。每个片段类都是在不同的XML布局文件中为自己的布局定义的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类中的片段类获取视图 我试过:
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(提示:)