“ java.lang.NullPointerException:尝试调用虚拟方法”在TabLayout中

问题描述 投票:0回答:1

我正在尝试在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”

java android android-studio android-tablayout
1个回答
0
投票

这里您没有实例化任何东西。

您正在使用

viewPager=(ViewPager)findViewById(R.id.view_pager);

因此,fragmentsnullfragmentsTitles也是null

© www.soinside.com 2019 - 2024. All rights reserved.