Android 从活动中调用片段
我有一个Android 从活动中调用片段,android,Android,我有一个导航抽屉活动,它包含两个片段。我的问题是我想调用按钮中的导航抽屉活动类单击哪个应该有片段B,默认情况下导航抽屉有片段A 我在这里发布我的代码: back.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { startActivity(new Intent(getApplicationContext(),
导航抽屉
活动,它包含两个片段
。我的问题是我想调用按钮中的导航抽屉
活动类
单击哪个应该有片段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视图的区域。尝试下面的代码
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();
}
});
就这样做一个
FragmentB
的例子
FragmentB fragment - new FragmentB();
然后像这样传过去
tx.replace(R.id.content_frame, fragment);
tx.commit();
现在,您可以使用instancefragment
从活动中访问fragment的所有变量和方法。像这样fragment.methodName()代码>尝试这种方法
在您的按钮中,单击发送额外数据以检查您需要的片段
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;
最后一个挑战是
private void goToFragment(Fragment fragment, boolean addToBackStack) {
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
if (addToBackStack) {
transaction.addToBackStack(null);
}
transaction.replace(R.id.container, fragment).commit();
}
请尝试以下代码:
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();
}
});
希望它能解决您的问题。可能与“我无法访问内容”框架重复,该框架是导航抽屉活动的视图。。因此,如果在此(当前)活动中没有名为content_frame的视图,我无法将FragmentB替换为content_frame。我将尝试此操作