簡體   English   中英

TabLayout 中的“java.lang.NullPointerException:嘗試調用虛擬方法”

[英]“java.lang.NullPointerException: Attempt to invoke virtual method” in TabLayout

我正在嘗試在 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 主”

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);
    }
}

Gradle 應用程序:

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);

因此, fragmentsnullfragmentsTitles標題也是null

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM