显示错误\。java.lang.NullPointerException:尝试在空对象引用上调用接口方法“java.lang.Object java.util.List.get(int)”
我正在创建测验应用程序。当所有的问题都得到回答时。我设定了一个打开记分活动的意图。但应用程序崩溃并在设置活动中显示错误 结构主活动->类别活动->设置活动->问题活动->评分活动 这是航海日志显示错误\。java.lang.NullPointerException:尝试在空对象引用上调用接口方法“java.lang.Object java.util.List.get(int)”,java,android,android-studio,Java,Android,Android Studio,我正在创建测验应用程序。当所有的问题都得到回答时。我设定了一个打开记分活动的意图。但应用程序崩溃并在设置活动中显示错误 结构主活动->类别活动->设置活动->问题活动->评分活动 这是航海日志 java.lang.RuntimeException: Unable to start activity ComponentInfo{com.marsad.quiz/com.marsad.quizapp.SetsActivity}: java.lang.NullPointerException: Atte
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.marsad.quiz/com.marsad.quizapp.SetsActivity}: java.lang.NullPointerException: Attempt to invoke interface method 'java.lang.Object java.util.List.get(int)' on a null object reference
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2890)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2968)
at android.app.ActivityThread.-wrap11(Unknown Source:0)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1672)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:192)
at android.app.ActivityThread.main(ActivityThread.java:6711)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:549)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:826)
Caused by: java.lang.NullPointerException: Attempt to invoke interface method 'java.lang.Object java.util.List.get(int)' on a null object reference
at com.marsad.quizapp.SetsActivity.onCreate(SetsActivity.java:68)
at android.app.Activity.performCreate(Activity.java:7181)
at android.app.Activity.performCreate(Activity.java:7172)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1220)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2843)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2968)
at android.app.ActivityThread.-wrap11(Unknown Source:0)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1672)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:192)
at android.app.ActivityThread.main(ActivityThread.java:6711)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:549)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:826)
从类别活动传递
public static List<CategoryModel> list;
下面是setActivity.java
public class SetsActivity extends AppCompatActivity {
private GridView gridView;
private List<String> sets;
private InterstitialAd mInterstitialAd;
//Theme
Constant constant;
SharedPreferences app_preferences;
int appTheme;
int themeColor;
int appColor;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
app_preferences = PreferenceManager.getDefaultSharedPreferences(this);
appColor = app_preferences.getInt("color", 0);
appTheme = app_preferences.getInt("theme", 0);
//defaultColor = app_preferences.getInt("default", 0);
themeColor = appColor;
constant.color = appColor;
if (themeColor == 0){
setTheme(Constant.theme);
}else if (appTheme == 0){
setTheme(Constant.theme);
}else{
setTheme(appTheme);
}
setContentView(R.layout.activity_sets);
Toolbar toolbar = findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
if (getSupportActionBar() != null) {
getSupportActionBar().setTitle(getIntent().getStringExtra("title"));
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
}
gridView = findViewById(R.id.gridView);
sets = CategoryActivity.list.get(getIntent().getIntExtra("position", 0)).getSets();
GridAdapter adapter = new GridAdapter(sets, getIntent().getStringExtra("title"), mInterstitialAd);
gridView.setAdapter(adapter);
}
@Override
public boolean onOptionsItemSelected(@NonNull MenuItem item) {
if (item.getItemId() == android.R.id.home) {
finish();
}
return super.onOptionsItemSelected(item);
}
}
行集合=CategoryActivity.list.GetIntent.getIntExtraposition,0.getSets中的问题是正确的 CategoryActivity.list实际上为空 请检查对象是否在列表中初始化,以便在访问前检查-
if(CategoryActivity.list != null){
sets = CategoryActivity.list.get(getIntent().getIntExtra("position", 0)).getSets();
GridAdapter adapter = new GridAdapter(sets, getIntent().getStringExtra("title"), mInterstitialAd);
gridView.setAdapter(adapter);
}
希望这能对您有所帮助。CategoryActivity.list为null,您无法对null引用调用方法。这是否回答了您的问题?不要使用静态成员在活动之间传递数据。您的集合显然是一个简单的列表,因此您也可以使用PutstringArrayListXTRA和GetStringArrayListXTRA将其传递给Intent。谢谢,但它在适配器类中显示了一个错误是的,因为您已将nutt对象传递给适配器类。这就是为什么,我已更新了答案请检查。
if(CategoryActivity.list != null){
sets = CategoryActivity.list.get(getIntent().getIntExtra("position", 0)).getSets();
GridAdapter adapter = new GridAdapter(sets, getIntent().getStringExtra("title"), mInterstitialAd);
gridView.setAdapter(adapter);
}