猿问

如何在片段内加载新活动而不丢失底部导航栏

正如标题所说,当我点击图片图块时,我想要加载新活动,但是我希望保持导航栏可见。目前,使用下面的代码,活动开始但导航栏消失。我想帮助编写代码,以便活动开始但导航栏仍然存在。

public class HomeFragment extends Fragment {private ImageView imageCbt;private ImageView imageDistorted;@Nullable@Overridepublic android.
view.View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
    return inflater.inflate(R.layout.fragment_home, container, false);}@Overridepublic void onActivityCreated(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onActivityCreated(savedInstanceState);

    // get the button view
    imageCbt = getView().findViewById(R.id.whatIsCbt);
    imageDistorted = getView().findViewById(R.id.distortedThinking);

    // set a onclick listener for when the button gets clicked
    imageCbt.setOnClickListener(new View.OnClickListener() {
        // Start new list activity
        public void onClick(View v) {
            Intent mainIntent = new Intent(getActivity(),
                    IntroActivity2.class);
            startActivity(mainIntent);
        }
    });

    imageDistorted.setOnClickListener(new View.OnClickListener() {
        // Start new list activity
        public void onClick(View v) {
            Intent mainIntent = new Intent(getActivity(),
                    TwelveTypesDistortedThinkingActivity.class);
            startActivity(mainIntent);



        }
    });}


智慧大石
浏览 458回答 2
2回答

开满天机

要更改当前片段,可以将单击侦听器中的代码替换为此片段(使用活动组内的其他片段替换片段):Fragment newFragment = new ExampleFragment();FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();// Replace whatever is in the fragment_container view with this fragment,// and add the transaction to the back stack if neededtransaction.replace(R.id.fragment_container, newFragment);transaction.addToBackStack(null);// Commit the transactiontransaction.commit();然后,您需要将您的活动转换为Fragment(可能需要进行一些重构)并更改onClickListener方法中的当前片段。PS:当您使用导航栏时,片段是应用程序架构中的最佳实践。

三国纷争

像这样替换OnNavigationItemSelectedListener上的片段 FragmentTransaction transaction = getSupportFragmentManager().beginTransaction(); transaction.replace(R.id.frame_container, yourFragment); transaction.addToBackStack(null); transaction.commit();完整教程Android使用底部导航!
随时随地看视频慕课网APP

相关分类

Java
我要回答