![](/img/trans.png)
[英]Android Studio java.lang.NullPointerException: Attempt to invoke virtual method
[英]“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);
因此, fragments
是null
, fragmentsTitles
標題也是null
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.