2020-04-29 10:58:37.475 9969-9986/com.sunofbeaches.taobaounion E/MemoryLeakMonitorManager: MemoryLeakMonitor.jar is not exist!
2020-04-29 10:58:37.475 9969-9969/com.sunofbeaches.taobaounion E/Minikin: Could not get cmap table size!
2020-04-29 10:58:37.553 9969-9969/com.sunofbeaches.taobaounion E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.sunofbeaches.taobaounion, PID: 9969
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.sunofbeaches.taobaounion/com.example.wjw.com.myapplication.ui.activity.MainActivity}: java.lang.IllegalStateException: Required view 'main_navigation_bar' with ID 2131296512 for field 'mainNavigationBar' was not found. If this view is optional add '@Nullable' (fields) or '@Optional' (methods) annotation.
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3303)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3411)
at android.app.ActivityThread.-wrap12(Unknown Source:0)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1994)
at android.os.Handler.dispatchMessage(Handler.java:108)
at android.os.Looper.loop(Looper.java:166)
at android.app.ActivityThread.main(ActivityThread.java:7529)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:245)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:921)
Caused by: java.lang.IllegalStateException: Required view 'main_navigation_bar' with ID 2131296512 for field 'mainNavigationBar' was not found. If this view is optional add '@Nullable' (fields) or '@Optional' (methods) annotation.
at butterknife.internal.Utils.findRequiredView(Utils.java:84)
at butterknife.internal.Utils.findRequiredViewAsType(Utils.java:96)
at com.example.wjw.com.myapplication.ui.activity.MainActivity_ViewBinding.<init>(MainActivity_ViewBinding.java:27)
at java.lang.reflect.Constructor.newInstance0(Native Method)
at java.lang.reflect.Constructor.newInstance(Constructor.java:334)
at butterknife.ButterKnife.bind(ButterKnife.java:170)
at butterknife.ButterKnife.bind(ButterKnife.java:99)
at com.example.wjw.com.myapplication.ui.activity.MainActivity.onCreate(MainActivity.java:47)
at android.app.Activity.performCreate(Activity.java:7383)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1218)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3256)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3411)
at android.app.ActivityThread.-wrap12(Unknown Source:0)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1994)
at android.os.Handler.dispatchMessage(Handler.java:108)
at android.os.Looper.loop(Looper.java:166)
at android.app.ActivityThread.main(ActivityThread.java:7529)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:245)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:921)
run:
04/29 10:58:32: Launching 'app' on HUAWEI RNE-AL00.
$ adb shell am start -n "com.sunofbeaches.taobaounion/com.example.wjw.com.myapplication.ui.activity.MainActivity" -a android.intent.action.MAIN -c android.intent.category.LAUNCHER
Timed out waiting for process (com.sunofbeaches.taobaounion) to appear on huawei-rne_al00-68UDU17A20001077.
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".ui.activity.MainActivity">
<FrameLayout
android:id="@+id/homepage"
android:layout_width="match_parent"
android:layout_height="match_parent">
<com.google.android.material.bottomnavigation.BottomNavigationView
android:id="@+id/main_navigation_bar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="bottom"
app:itemIconTint="@drawable/nagation_color"
app:itemTextColor="@drawable/nagation_color"
app:menu="@menu/my_nagationview" />
</FrameLayout>
</RelativeLayout>
package com.example.wjw.com.myapplication.ui.activity;
import android.os.Bundle;
import android.view.MenuItem;
import android.widget.FrameLayout;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentManager;
import androidx.fragment.app.FragmentTransaction;
import com.example.wjw.com.myapplication.R;
import com.example.wjw.com.myapplication.ui.base.BaseFragment;
import com.example.wjw.com.myapplication.ui.fragment.HomeFragment;
import com.example.wjw.com.myapplication.ui.fragment.RedPacketFragment;
import com.example.wjw.com.myapplication.ui.fragment.SearchFragment;
import com.example.wjw.com.myapplication.ui.fragment.SelectedFragment;
import com.example.wjw.com.myapplication.utils.LogUtils;
import com.google.android.material.bottomnavigation.BottomNavigationView;
import butterknife.BindView;
import butterknife.ButterKnife;
import butterknife.Unbinder;
public class MainActivity extends AppCompatActivity {
private static final String TAG = "MainActivity";
@BindView(R.id.main_navigation_bar)
BottomNavigationView mainNavigationBar;
@BindView(R.id.homepage)
FrameLayout homepage;
private Fragment mhomeFragment;
private Fragment mselectedFragment;
private Fragment mredPacketFragment;
private Fragment msearchFragment;
FragmentManager mFm = getSupportFragmentManager();
private Unbinder mBind;
@Override
protected void onCreate(Bundle savedInstanceState) {
mBind=ButterKnife.bind(this);
ButterKnife.bind(this);
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ButterKnife.bind(this);
initfragments();
initlister();
}
@Override
protected void onDestroy() {
super.onDestroy();
if (mBind!=null){
mBind.unbind();
}
}
private void initlister() {
mainNavigationBar.setOnNavigationItemSelectedListener(new BottomNavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem menuItem) {
if (menuItem.getItemId() == R.id.home) {
LogUtils.d(this, "转到首页");
switchFragment ((BaseFragment) mhomeFragment);
} else if (menuItem.getItemId() == R.id.select) {
LogUtils.i(this, "转到精选");
switchFragment ((BaseFragment) mselectedFragment);
} else if (menuItem.getItemId() == R.id.redpacket) {
LogUtils.w(this, "转到特惠");
switchFragment ((BaseFragment) mredPacketFragment);
} else if (menuItem.getItemId() == R.id.search) {
LogUtils.e(this, "转到搜索");
switchFragment ((BaseFragment) msearchFragment);
}
return true;
}
});
}
private void switchFragment(BaseFragment targetFragment) {
FragmentTransaction fragmentTransaction=mFm.beginTransaction();
fragmentTransaction.replace(R.id.homepage, targetFragment);
fragmentTransaction.commit();
}
private void initfragments() {
mhomeFragment= new HomeFragment();
mselectedFragment= new SelectedFragment();
mredPacketFragment= new RedPacketFragment();
msearchFragment= new SearchFragment();
mFm=getSupportFragmentManager();
switchFragment ((BaseFragment) mhomeFragment);
}
}
package com.example.wjw.com.myapplication.ui.fragment;
import android.view.View;
import androidx.viewpager.widget.ViewPager;
import com.example.wjw.com.myapplication.R;
import com.example.wjw.com.myapplication.model.domain.Categories;
import com.example.wjw.com.myapplication.presenter.iHomepresenter;
import com.example.wjw.com.myapplication.presenter.impl.Homepresenterimpl;
import com.example.wjw.com.myapplication.ui.adapter.HomePagerAdapter;
import com.example.wjw.com.myapplication.ui.base.BaseFragment;
import com.example.wjw.com.myapplication.utils.LogUtils;
import com.example.wjw.com.myapplication.view.iHomecallback;
import com.google.android.material.tabs.TabLayout;
import butterknife.BindView;
public class HomeFragment extends BaseFragment implements iHomecallback {
@BindView(R.id.home_indacater)
public TabLayout mTabLayout;
private iHomepresenter mhomepresenter;
@BindView(R.id.home_pager)
public ViewPager homePager;
private HomePagerAdapter mhomePagerAdapter ;
@Override
protected int getRootViewResId() {
return R.layout.fragment_home;}
@Override
protected void initView(View rootView) {
mTabLayout.setupWithViewPager(homePager);
//给ViewPager设置适配器
mhomePagerAdapter=new HomePagerAdapter(getChildFragmentManager());
homePager.setAdapter(mhomePagerAdapter);
}
@Override
protected void initpresenter() {
//创建Presenter
mhomepresenter = new Homepresenterimpl();
mhomepresenter.registerCallback(this);
}
@Override
protected void LoadData() {
//加载数据
mhomepresenter.getCategrories();
}
@Override
public void onCategoriesloaded(Categories categories) {
LogUtils.d(this,"onCategroiesloaded....");
//加载的数据会从这里回来
if(mhomePagerAdapter!=null){
mhomePagerAdapter.setCategories(categories);
}
}
@Override
protected void release() {
//取消回到注册
if (mhomepresenter!=null){
mhomepresenter.unregisterCallback(this);
};
}
}
//package com.example.wjw.com.myapplication.ui.adapter;
//
//import androidx.annotation.Nullable;
//import androidx.fragment.app.Fragment;
//import androidx.fragment.app.FragmentManager;
//import androidx.fragment.app.FragmentPagerAdapter;
//
//import com.example.wjw.com.myapplication.model.domain.categories;
//import com.example.wjw.com.myapplication.ui.fragment.HomePagerFragment;
//
//import java.util.ArrayList;
//import java.util.List;
//
//
//public class HomePagerAdapter extends FragmentPagerAdapter {
//
//
//
// private List<categories.DataBean> categorylist=new ArrayList<>();
//
// public HomePagerAdapter(FragmentManager fm) {
// super(fm);
// }
//
//
//
//
// @Nullable
// @Override
// public CharSequence getPageTitle(int position) {
// return categorylist.get(position).getTitle();
// }
//
// @Override
// public Fragment getItem(int position) {
// return new HomePagerFragment();
// }
//
// @Override
// public int getCount() {
// return categorylist.size();
// }
//
// public void setcategories(categories categories) {
// categorylist.clear();
// List<categories.DataBean> data=categories.getData();
// this.categorylist.addAll(data);
// notifyDataSetChanged();
// }
//}
package com.example.wjw.com.myapplication.ui.adapter;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentManager;
import androidx.fragment.app.FragmentPagerAdapter;
import com.example.wjw.com.myapplication.model.domain.Categories;
import com.example.wjw.com.myapplication.ui.fragment.HomePagerFragment;
import com.example.wjw.com.myapplication.utils.LogUtils;
import java.util.ArrayList;
import java.util.List;
public class HomePagerAdapter extends FragmentPagerAdapter {
private List<Categories.DataBean> categoryList = new ArrayList<>();
public HomePagerAdapter(@NonNull FragmentManager fm) {
super(fm,BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT);
}
@Nullable
@Override
public CharSequence getPageTitle(int position) {
// return super.getPageTitle(position);
return categoryList.get(position).getTitle();
}
@NonNull
@Override
public Fragment getItem(int position) {
// return null;
LogUtils.d(this,"getItem - > " + position);
Categories.DataBean dataBean = categoryList.get(position);
HomePagerFragment homePagerFragment = new HomePagerFragment();
return homePagerFragment;
}
@Override
public int getCount() {
// return 0;
return categoryList.size();
}
public void setCategories(Categories categories) {
categoryList.clear();
List<Categories.DataBean> data = categories.getData();
this.categoryList.addAll(data);
LogUtils.d(this,"size -- > " + this.categoryList.size());
notifyDataSetChanged() ;
}
}
mBind=ButterKnife.bind(this);要放在setContentView(R.layout.activity_main);之后就没有问题了
Caused by: java.lang.IllegalStateException: Required view 'main_navigation_bar' with ID 2131296512 for field 'mainNavigationBar' was not found. If this view is optional add '@Nullable' (fields) or '@Optional' (methods) annotation.
Required view 'main_navigation_bar' with ID 2131296512 for field 'mainNavigationBar' was not found.
布局有问题吧。