我有一个 MainActivity 类,是否可以使用 Button onclicklistner 启动一个 fragment 类
主要 Activity 类:
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button r_btn=(Button) findViewById(R.id.btn_register);
r_btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent i = new Intent(MainActivity.this, test.class);
startActivity(i);
}
});
fragment 类
public class test extends Fragment{
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_test, container, false);
rootView.findViewById(R.id.label1);
// Inflate the layout for this fragment
return rootView;
}
}
任何提示都会有所帮助..
最佳答案
是的,你可以,但你不能像对待 Activity 一样对待 fragment ,所以你不能使用 startActivity
方法。使用 fragment 管理器调用 fragment
fragmentContainer = (RelativeLayout) findViewById(R.id.fragmentContainer);
r_btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
replaceFragmentInContainer(new test(), fragmentContainer.getId(), getSupportFragmentManager());
}
});
public void replaceFragmentInContainer(Fragment DestinationFragment,int containerResourceID,FragmentManager fragmentManager )
{
FragmentTransaction ft=fragmentManager.beginTransaction();
int viewResourceID = containerResourceID;
ft.replace(viewResourceID, DestinationFragment);
ft.commit();
}
Activity xml 中的容器将处理您的 fragment
<RelativeLayout
android:id="@+id/fragmentContainer"
android:layout_width="match_parent"
android:layout_below="@+id/toolbar"
android:layout_height="match_parent"
>
</RelativeLayout>
或者您可以查看 this
关于android - 是否可以从 Activity 类启动 Fragment 类..使用 Intent,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37761248/