• 团队冲刺第十天


    今天主要就是对app进行优化了,因为嵌套了各个部分的代码,所以需要进行大结构的修改,突然就增加了一个头疼问题。

    也是因为彼此之间的交流没做好,导致代码之间嵌合出现了整体结构的错误。

    主要是需要嵌套多层Fragment,这里需要导入一些包。

    并且此次在项目中的build.grade和app中的build.grade都需要添加依赖。

    项目中:

    classpath 'com.jakewharton:butterknife-gradle-plugin:10.2.3'
    

     app中:

     implementation 'com.jakewharton:butterknife:10.2.3'
        annotationProcessor 'com.jakewharton:butterknife-compiler:10.2.3'
    

     之后进行多层嵌套就可以。

    Mainactivity:

    package com.example.bowenwang;
    
    import androidx.annotation.NonNull;
    import androidx.annotation.Nullable;
    import androidx.annotation.RequiresApi;
    import androidx.appcompat.app.AppCompatActivity;
    import androidx.fragment.app.Fragment;
    import androidx.fragment.app.FragmentManager;
    import androidx.fragment.app.FragmentTransaction;
    import androidx.viewpager.widget.PagerAdapter;
    import androidx.viewpager.widget.ViewPager;
    
    import android.content.Intent;
    import android.graphics.Color;
    import android.os.Build;
    import android.os.Bundle;
    import android.view.MenuItem;
    import android.view.View;
    import android.view.Window;
    
    import com.google.android.material.bottomnavigation.BottomNavigationView;
    import com.google.android.material.tabs.TabLayout;
    
    import butterknife.BindView;
    import butterknife.ButterKnife;
    
    public class MainActivity extends AppCompatActivity implements View.OnClickListener{
    
    //    private Intent intent;
        TabLessActivity mfirstFragment;
        MyFragment mmyFragment;
        int panduan=1;
        FragmentManager mFm;
        @BindView(R.id.main_bottn)
        BottomNavigationView mbottomNavigationView;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            ButterKnife.bind(this);
            mbottomNavigationView = findViewById(R.id.main_bottn);
            initView();
            initFragment();
    //        findViewById(R.id.button).setOnClickListener(this);
    //        findViewById(R.id.button2).setOnClickListener(this);
        }
        private void initFragment() {
            mfirstFragment = new TabLessActivity();
            mmyFragment = new MyFragment();
            mFm = getSupportFragmentManager();
            switchFragment(mmyFragment,mfirstFragment);
        }
    
        private void initView() {
            StatusBarCompat.compat(this, Color.parseColor("#eb4f38"));
            mbottomNavigationView.setOnNavigationItemSelectedListener(new BottomNavigationView.OnNavigationItemSelectedListener() {
                @Override
                public boolean onNavigationItemSelected(@NonNull MenuItem item) {
                    if (item.getItemId() == R.id.discover) {
                        StatusBarCompat.compat(MainActivity.this, Color.parseColor("#eb4f38"));
                        switchFragment(mmyFragment,mfirstFragment);
                        mmyFragment.onResume();
                    } else if (item.getItemId() == R.id.me) {
                        StatusBarCompat.compat(MainActivity.this, Color.parseColor("#009EF1"));
                        switchFragment(mfirstFragment,mmyFragment);
                        mfirstFragment.onResume();// 还没搞懂这个方法的意思
                    }
                    return true;
                }
            });
        }
        private void switchFragment(Fragment currentFragment,Fragment targetFragment) {
            /*开启事务*/
            FragmentTransaction fragmentTransaction = mFm.beginTransaction();
            if(panduan==1){
                fragmentTransaction.add(R.id.main_fragment,currentFragment);
                fragmentTransaction.add(R.id.main_fragment,targetFragment);
                panduan=panduan+1;
            }
            /*页面跳转,参数类型:主FragmentID,需要跳转的FragmentID*/
            fragmentTransaction.hide(currentFragment);
            fragmentTransaction.show(targetFragment);
    //        fragmentTransaction.replace(R.id.main_fragment, targetFragment);
            /*提交事务*/
            fragmentTransaction.commit();
        }
        @Override
        public void onClick(View v) {
    
        }
    
    //    @Override
    //    public void onClick(View v) {
    //        switch (v.getId()) {
    //            case R.id.button:
    //                intent=new Intent(MainActivity.this, TabLessActivity.class);
    //                break;
    //            case R.id.button2:
    //                intent=new Intent(MainActivity.this, TabManyActivity.class);
    //                break;
    //        }
    //        startActivity(intent);
    //    }
    }
    

     之后在Fragment中可使用多层嵌套,了解之后发现并没有那么难,可能是因为突然出现问题导致有些慌。

    这样第一阶段算是进行结尾。

    作者:哦心有
    本文版权归作者和博客园共有,欢迎转载,但必须给出原文链接,并保留此段声明,否则保留追究法律责任的权利。
  • 相关阅读:
    游戏大厅升级日记 第3天
    GamePlatform 2.0 b的数据库脚本
    会xiaotie的一个TCP问题
    求助,基于WCF的聊天室,在用户非法掉线后,不能将Disconnected事件通知到Server
    SQL Server 聚合函数 (方差和标准差)
    体验了一把vs2008
    老罗语录打包下载(保证能下载)
    局域网单独一台机器无法ping通网关故障的解决方法
    vs2005中遇到的一个奇怪的错误 
    Page.RegisterClientScriptBlock和Page.RegisterStartupScript有何区别
  • 原文地址:https://www.cnblogs.com/haobox/p/14880241.html
Copyright © 2020-2023  润新知