[英]Call Fragment from activity
I have a Navigation drawer
activity and it contains couple of Fragments
.我有一个
Navigation drawer
活动,它包含几个Fragments
。 My problem is I want to call the Navigation drawer
activity class in button
click which should have fragment B, by default navigation drawer has fragment A.我的问题是我想在
button
单击中调用Navigation drawer
活动类,它应该有片段 B,默认情况下导航抽屉有片段 A。
I am posting my code here:我在这里发布我的代码:
back.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
startActivity(new Intent(getApplicationContext(),Navigation.class));
FragmentTransaction tx = getSupportFragmentManager().beginTransaction();
tx.replace(R.id.content_frame, new FragmentB());
tx.commit();
finish();
}
});
Where content_frame is the area were I want to replace fragment B view.. content_frame 是我想替换片段 B 视图的区域。
try this approach试试这个方法
in your button click send extra data to check what fragment you need在您的按钮中单击发送额外数据以检查您需要的片段
back.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(getApplicationContext(), Navigation.class);
intent.putExtra("SELECTEDVALUE", 2);//1 for fragament A use 2 for fragment B
startActivity(intent);
}
});
Now, in your oncreate() method of Navigation Activity现在,在导航活动的 oncreate() 方法中
Bundle extras = savedInstanceState != null ? savedInstanceState : getIntent().getExtras();
int selectedValue = extras.getInt("SELECTEDVALUE");
switch (selectedValue) {
case 1:
goToFragment(new A(), false);
break;
case 2:
goToFragment(new B(), false);
break;
finally gotoFragment is...最后 gotoFragment 是...
private void goToFragment(Fragment fragment, boolean addToBackStack) {
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
if (addToBackStack) {
transaction.addToBackStack(null);
}
transaction.replace(R.id.container, fragment).commit();
}
Try below code;试试下面的代码;
back.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Fragment fragment = new FragmentB();
FragmentManager fm =getActivity().getSupportFragmentManager();
FragmentTransaction ft = fm.beginTransaction();
ft.replace(R.id.content_frame, fragment);
ft.commit();
}
});
Just make an instance of FragmentB
like this像这样制作一个
FragmentB
实例
FragmentB fragment - new FragmentB();
and then pass it like this .然后像这样传递它。
tx.replace(R.id.content_frame, fragment);
tx.commit();
now you can access all the variables and methods of fragment from your activity using instance fragment
.现在您可以使用实例
fragment
从您的活动中访问片段的所有变量和方法。 like this fragment.methodName();
像这个
fragment.methodName();
Try this code:试试这个代码:
back.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
getActivity().getSupportFragmentManager().beginTransaction()
.add(R.id.content_frame, new FragmentB(), "fragmentB").addToBackStack(null).commit();
}
});
hope it'll solve your problem.希望它能解决你的问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.