バックスタックには1フレームと2フラグメントの使用がありますが、問題がありました。 フレームにフラグメント2を追加し、Backstackに追加するとします。私はfragment2上の同じ場所をクリックすることができますが、効果はフラグメント1にあります。どのように修正することができますか?ありがとうalots!あなたのfragment2
レイアウトXMLファイルに1フレームに2つのフラグメントがあります
Fragment1.java
public class Fragment1 extends Fragment {
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_1,container,false);
Button b = (Button)view.findViewById(R.id.btn1);
b.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(getActivity(),"FR1",Toast.LENGTH_SHORT).show();
}
});
return view;
}
} BackstackActivity
public class BackstackActivity extends AppCompatActivity {
private Button btnFrag;
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_backstack);
btnFrag = (Button) findViewById(R.id.btn_replace_fragment);
btnFrag.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
addFragment(new Fragment2());
Log.e("Replaced fragment", "2");
}
});
replaceFragmentContent(new Fragment1());
}
protected void replaceFragmentContent(Fragment fragment) {
if (fragment != null) {
FragmentManager fmgr = getSupportFragmentManager();
FragmentTransaction ft = fmgr.beginTransaction();
ft.replace(R.id.container_body, fragment);
ft.commit();
}
}
protected void addFragment(Fragment fragment) {
FragmentManager fmgr = getSupportFragmentManager();
FragmentTransaction ft = fmgr.beginTransaction();
ft.add(R.id.container_body, fragment);
ft.addToBackStack(fragment.getClass().getSimpleName());
ft.commit();
}
}
あなたの 'fragment2'のクラス詳細を追加してください。 – codeFreak