运行闪退,以下为报错,注释掉重写的方法和initVIew可以运行但是ViewPager没有显示
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.taobao/com.example.taobao.MainActivity}: android.view.InflateException: Binary XML file line #9: Error inflating class fragment
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2325)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2387)
at android.app.ActivityThread.access$800(ActivityThread.java:151)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1303)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5254)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:905)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:700)
Caused by: android.view.InflateException: Binary XML file line #9: Error inflating class fragment
public class MainActivity extends AppCompatActivity /*implements MyViewPager.OnViewPagerTouchListener
, ViewPager.OnPageChangeListener*/ {
View view;
private MyViewPager mLoopPager;
private LoopPagerAdapter mLoopPagerAdapter;
private static List<Integer> sPics = new ArrayList<>();
private Handler mHandler;
private Boolean mFlag = false;
static {
sPics.add(R.drawable.pic1);
sPics.add(R.drawable.pic2);
sPics.add(R.drawable.pic3);
sPics.add(R.drawable.pic4);
sPics.add(R.drawable.pic5);
}
private LinearLayout pointContainer;
@RequiresApi(api = Build.VERSION_CODES.JELLY_BEAN)
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// BottomNavigationView bottomNavigationView = findViewById(R.id.bottomNavigationView);
//
// NavController navController = Navigation.findNavController(this, R.id.fragment);
//
// AppBarConfiguration configuration = new AppBarConfiguration.Builder(bottomNavigationView.getMenu()).build();
// NavigationUI.setupWithNavController(bottomNavigationView, navController);
//initView();
mHandler = new Handler();
}
// @Override
// public void onAttachedToWindow() {
// super.onAttachedToWindow();
// mHandler.post(mLoopTask);
//
// }
//
// @Override
// public void onDetachedFromWindow() {
// super.onDetachedFromWindow();
// mHandler.removeCallbacks(mLoopTask);
// }
//
// private Runnable mLoopTask = new Runnable() {
// @Override
// public void run() {
// if (!mFlag) {
// int currentItem = mLoopPager.getCurrentItem();
// mLoopPager.setCurrentItem(++currentItem, true);
//
// }
// mHandler.postDelayed(this, 2000);
//
// }
// };
//
// @RequiresApi(api = Build.VERSION_CODES.JELLY_BEAN)
// private void initView() {
//
//
// view = View.inflate(this, R.layout.activity_main, null);
//
// //mLoopPager = (MyViewPager) this.findViewById(R.id.loop);
// mLoopPager = (MyViewPager) view.findViewById(R.id.loop);//这个为什么会为空
//
// if (mLoopPager == null) {
// Log.e("MainActivity", "viewPager should not be null");
// }
//
//
// //设置适配器
// mLoopPagerAdapter = new LoopPagerAdapter();
// if (mLoopPagerAdapter == null) {
// Log.e("MainActivity", "viewPagerAdapter should not be null");
// }
// mLoopPagerAdapter.setData(sPics);
// mLoopPager.setAdapter(mLoopPagerAdapter);
//
// mLoopPager.setOnViewPagerListener(this);
// mLoopPager.addOnPageChangeListener(this);
// //根据图片的个数去添加点的个数
// pointContainer = (LinearLayout) this.findViewById(R.id.points);
//
// InsertPoint();
//
// mLoopPager.setCurrentItem(100 * sPics.size() - 1, false);
// }
//
// @RequiresApi(api = Build.VERSION_CODES.JELLY_BEAN)
// private void InsertPoint() {
// for (int i = 0; i < sPics.size(); i++) {
// View point = new View(this);
// LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(40, 40);
// layoutParams.leftMargin = 20;
// point.setBackground(getResources().getDrawable(R.drawable.normal_point));
// point.setLayoutParams(layoutParams);
//
//
// pointContainer.addView(point);
//
//
// }
// }
//
//
// @Override
// public void onPagerTouch(Boolean isTouch) {
// mFlag = isTouch;
// }
//
// @Override
// public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
//
// }
//
// @Override
// public void onPageSelected(int position) {
// //viewPager停下来时的点位置
// int realPos;
// if (mLoopPagerAdapter.getDataRealSize() != 0) {
// realPos = position % mLoopPagerAdapter.getDataRealSize();
// } else {
// realPos = 0;
// }
// setSelectPoint(realPos);
//
// }
//
// private void setSelectPoint(int realPos) {
// for (int i = 0; i < pointContainer.getChildCount(); i++) {
// View point = pointContainer.getChildAt(i);
// if (i != realPos) {
// point.setBackgroundResource(R.drawable.normal_point);
// } else {
// point.setBackgroundResource(R.drawable.select_point);
// }
// }
// }
//
// @Override
// public void onPageScrollStateChanged(int state) {
//
// }
}
package com.example.taobao;
import androidx.lifecycle.ViewModelProviders;
import android.os.Bundle;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
public class HomeFragment extends Fragment {
View view;
private HomeViewModel mViewModel;
public static HomeFragment newInstance() {
return new HomeFragment();
}
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container,
@Nullable Bundle savedInstanceState) {
//view = inflater.inflate(R.layout.home_fragment, null);
// mLoopPager = (MyViewPager) this.findViewById(R.id.loop);
return inflater.inflate(R.layout.home_fragment, container, false);
//return view;
}
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
mViewModel = ViewModelProviders.of(this).get(HomeViewModel.class);
// TODO: Use the ViewModel
}
}
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout 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=".MainActivity">
<fragment
android:id="@+id/fragment"
android:name="androidx.navigation.fragment.NavHostFragment"
android:layout_width="match_parent"
android:layout_height="0dp"
app:defaultNavHost="true"
app:layout_constraintBottom_toTopOf="@+id/bottomNavigationView"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:navGraph="@navigation/guide" />
<com.google.android.material.bottomnavigation.BottomNavigationView
android:id="@+id/bottomNavigationView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/design_default_color_background"
app:labelVisibilityMode="labeled"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:menu="@menu/menu" />
</androidx.constraintlayout.widget.ConstraintLayout>
XML file line #9。错误在这一行。
需要补充这里的xml布局代码。
在MainActivity ,initView()这里,已经是重复加载activity_main,完全多此一举了
这个Fragment的name属性写错了,把它改成
为啥关键的Log不给呢[捂脸],其他的log呢。