我在线阅读内容,要调用另一个片段,以占用FrameLayout,您需要创建一个与活动对话的接口,并且当按钮单击活动中定义的接口内的函数时,会将Fragment替换为另一个片段,但是我没有直接创建接口,而是尝试直接在片段内部进行操作,并且可以正常工作。那么我为什么不应该这样做呢?
import android.content.Context;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentTransaction;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
public class FragmentOne extends Fragment {
public FragmentOne() {
// Required empty public constructor
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_fragment_one, container, false);
Button btnONe = view.findViewById(R.id.btnOne);
btnONe.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
onButtonPressed();
}
});
return view;
}
public void onButtonPressed() {
FragmentTransaction fragmentTransaction = getActivity().getSupportFragmentManager().beginTransaction();
fragmentTransaction.replace(R.id.fragmentContainer, new FragmentTwo("Femin Dharamshi did it!"));
fragmentTransaction.addToBackStack(null);
fragmentTransaction.commit();
}
}
答案 0 :(得分:2)
片段是Activity的一部分,片段应通过其父活动托管,如google在Android开发人员文档中所述。 您可以参考此链接: https://developer.android.com/training/basics/fragments/communicating
答案 1 :(得分:0)
您应该使用getFragmentManager().beginTransaction().replace(int id, Fragment fr).commit();
方法而不是onViewCreated()
方法调用onCreateView()
。
只需将onCreateView()
中的代码移至onViewCreated()
方法中即可。