• 团队冲刺第十天


    今天主要就是对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中可使用多层嵌套,了解之后发现并没有那么难,可能是因为突然出现问题导致有些慌。

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

    作者:哦心有
    本文版权归作者和博客园共有,欢迎转载,但必须给出原文链接,并保留此段声明,否则保留追究法律责任的权利。
  • 相关阅读:
    vue 之循环添加不同class
    小程序 之使用HMACSHA1算法加密报文
    微信小程序 之wx.getLocation()获取地理信息中的小坑
    js 时间戳与yyyy-mm-dd或yyyy-MM-dd HH-mm-ss互相转换
    小程序 之登录 wx.login()
    打开串口(COM)号大于9时报错
    linux的mysql权限错误导致看不到mysql数据库
    Nginx报错汇总
    获取磁盘总空间和剩余空间
    关于CoCreateInstance的0x800401f0问题
  • 原文地址:https://www.cnblogs.com/haobox/p/14880241.html
Copyright © 2020-2023  润新知