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