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