我正在尝试在Android Studio中使用TabLayout,但是我的应用崩溃了,我不知道该怎么办:
E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.appies, PID: 2935
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.appies/com.example.appies.PruebaTabLayout}: java.lang.NullPointerException: Attempt to invoke virtual method 'void com.example.appies.ViewPagerAdapter.addFragment(androidx.fragment.app.Fragment, java.lang.String)' on a null object reference
代码:“ Java Main”
package com.example.appies;
import androidx.appcompat.app.AppCompatActivity;
import androidx.viewpager.widget.ViewPager;
import android.os.Bundle;
import android.widget.ImageView;
import com.google.android.material.appbar.AppBarLayout;
import com.google.android.material.tabs.TabLayout;
public class PruebaTabLayout extends AppCompatActivity {
private TabLayout tabLayout;
private ViewPager viewPager;
private ViewPagerAdapter viewPagerAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_prueba_tab_layout);
viewPager=(ViewPager)findViewById(R.id.view_pager);
tabLayout=(TabLayout)findViewById(R.id.tabLayout);
viewPagerAdapter.addFragment(new LogicaPrincipalFragment(),"Principal");
viewPagerAdapter.addFragment(new LogicaExtrasFragment(),"Extras");
viewPager.setAdapter(viewPagerAdapter);
}
ViewPagerAdapter
package com.example.appies;
import androidx.annotation.NonNull;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentManager;
import androidx.fragment.app.FragmentPagerAdapter;
import java.util.ArrayList;
import java.util.List;
public class ViewPagerAdapter extends FragmentPagerAdapter {
private ArrayList<Fragment> fragments;
private ArrayList<String> fragmentsTitles;
public ViewPagerAdapter(FragmentManager fm) {
super(fm);
fragments = new ArrayList<>();
fragmentsTitles = new ArrayList<>();
}
@Override
public Fragment getItem(int position) {
return fragments.get(position);
}
@Override
public int getCount() {
return fragments.size();
}
public CharSequence getPageTitle(int position){
return fragmentsTitles.get(position);
}
public void addFragment(Fragment fragment, String title){
fragments.add(fragment);
fragmentsTitles.add(title);
}
}
分级应用:
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'androidx.appcompat:appcompat:1.1.0'
implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
implementation 'com.google.android.material:material:1.0.0'
implementation 'androidx.lifecycle:lifecycle-extensions:2.1.0'
implementation 'androidx.legacy:legacy-support-v4:1.0.0'
implementation 'com.google.android.material:material:1.0.0'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'androidx.test.ext:junit:1.1.1'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
implementation 'com.github.barteksc:android-pdf-viewer:3.0.0-beta.5'
implementation 'org.apache.commons:commons-io:1.3.2'
}
并且这些片段是默认情况下使用其各自的xml创建的那些片段
我使用最新的android,其中的操作是androidx且未实现“ v4”
这里您没有实例化任何东西。
您正在使用
viewPager=(ViewPager)findViewById(R.id.view_pager);
因此,fragments
是null
和fragmentsTitles
也是null