我正在试图找出片段是如何工作的。 我有3个类,MainActivity,Fragment1和Fragment2。
MainActivity扩展了SherlockFragmentActivity 和
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Fragment1 firstFragment = new Fragment1();
firstFragment.setArguments(getIntent().getExtras());
getSupportFragmentManager().beginTransaction()
.add(R.id.fragment_container1, firstFragment).commit();
现在,我将Fragment1加载到我的fragment_container中,它显示得很好。
(所以main_activity.xml只有一个)
好的,Fragment1扩展了SherlockFragment,只做了
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
return inflater.inflate(R.layout.fragment1layout, container, false);
所以我只是从我的.xml中充气,它有一个文本视图和一个按钮。
现在世界上哪里可以实例Button,并给他代码用Fragment2替换Fragment1?
这是什么代码,因为我现在“在Fragment1中”,所以我需要以某种方式与Fragment holder进行通信并告诉它“用Fragment2替换我”。
Fragment2还扩展了SherlockFragment,什么都不做,膨胀它是空的.xml
答案 0 :(得分:1)
您必须从fragment1调用您的fragment2,如下所示
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment1layout, container, false);
Button button = (Button)view.findViewById(R.id.yourButton);
button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
//Replace your fragment
}
});
return view;
}
答案 1 :(得分:0)
我现在“在Fragment1中”所以我需要以某种方式与Fragment holder沟通并告诉它“用Fragment2替换我”。
如果要在单击Fragment1中的按钮时将Fragment1替换为Fragment2:
(最佳做法)
(不良做法)
MainActivity
,将一个片段替换为另一个片段,例如changeFirstFragmentToAnother()
然后当你需要将fragment1更改为fragment2时,可以手动调用此方法(来自fragment1),如下所示:
((MainActivity)getActivity()).changeFirstFragmentToAnother();