我有Navigation drawer
个活动,其中包含几个Fragments
。我的问题是我想调用Navigation drawer
点击button
活动类,其中应该有片段B,默认导航抽屉有片段A。
我在这里发布我的代码:
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();
}
});
如果content_frame是我要替换片段B视图的区域..
答案 0 :(得分:2)
尝试这种方法
在您的按钮中单击发送额外数据以检查您需要的片段
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);
}
});
现在,在导航活动的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;
最后gotoFragment是......
private void goToFragment(Fragment fragment, boolean addToBackStack) {
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
if (addToBackStack) {
transaction.addToBackStack(null);
}
transaction.replace(R.id.container, fragment).commit();
}
答案 1 :(得分:0)
尝试以下代码;
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();
}
});
答案 2 :(得分:0)
只需制作FragmentB
这样的实例
FragmentB fragment - new FragmentB();
然后像这样传递它。
tx.replace(R.id.content_frame, fragment);
tx.commit();
现在,您可以使用实例fragment
访问活动中片段的所有变量和方法。像这样fragment.methodName();
答案 3 :(得分:0)
试试这段代码:
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();
}
});
希望它能解决你的问题。