如何解决此'int java.util.List.size()'? [重复]

问题描述 投票:-2回答:1
在主菜单中,当我按下图块时,该应用已停止。因此它显示在日志上,

    E / AndroidRuntime:致命异常:主要流程:com.moraspirit.moraspiritapp,PID:30859java.lang.RuntimeException:无法启动活动ComponentInfo {com.moraspirit.moraspiritapp / com.moraspirit.moraspiritapp.points.RankingActivity}:java.lang.NullPointerException:尝试调用接口方法空对象引用上的'int java.util.List.size()'在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2988)在android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3073)在android.app.ActivityThread.-wrap11(未知来源:0)在android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1734)在android.os.Handler.dispatchMessage(Handler.java:106)在android.os.Looper.loop(Looper.java:164)在android.app.ActivityThread.main(ActivityThread.java:7025)在java.lang.reflect.Method.invoke(本机方法)在com.android.internal.os.RuntimeInit $ MethodAndArgsCaller.run(RuntimeInit.java:441)在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1408)原因:java.lang.NullPointerException:尝试在空对象上调用接口方法'int java.util.List.size()'参考在com.moraspirit.moraspiritapp.points.RankingActivity.onCreate(RankingActivity.java:63)在android.app.Activity.performCreate(Activity.java:7258)在android.app.Activity.performCreate(Activity.java:7249)在android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1222)在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2941)
  • 所以这是我的RankActivityActivity.java文件。

    public class RankingActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_ranking); FragmentRanking fragmentRanking = new FragmentRanking(); FragmentManager manager = getSupportFragmentManager(); context = getBaseContext(); mainView = findViewById(R.id.layout_ranking); yearDropdown = (MaterialSpinner) findViewById(R.id.year_spinner); Gson gson = new Gson(); String data = FragmentRanking.getJsonData(context, "years"); if (data !=null) years = Arrays.asList(gson.fromJson(data, Year[].class)); else years = null; List<String> yearList = new ArrayList<>(years.size()); for (Year year : years) { yearList.add(year.getYear() != null ? year.getYear() : "2019"); } yearDropdown.setItems(yearList); fragmentYears = new FragmentYears(); yearDropdown.setOnItemSelectedListener(new MaterialSpinner.OnItemSelectedListener() { @Override public void onItemSelected(MaterialSpinner view, int position, long id, Object item) { switch (position){ case 0: FragmentRanking.setCurrentYear(2019); break; case 1: FragmentRanking.setCurrentYear(2018); break; case 2: FragmentRanking.setCurrentYear(2017); break; default: FragmentRanking.setCurrentYear(2020); break; } } }); manager.beginTransaction().add(R.id.layout_ranking, fragmentRanking).commit(); } public static void loadFragmentYear(){ fragmentYears.loadYears(context); } public static void makeSnackBar(String text, Boolean action){ if(!snackTime) return; Snackbar snackbar = Snackbar.make(getMainView(),text,Snackbar.LENGTH_LONG); snackbar.show(); setFalseSnackTime(); } private static View getMainView() { return mainView; } public static void setFalseSnackTime(){ snackTime = false; new Handler(Looper.getMainLooper()).postDelayed(() -> snackTime = true,3000); }

  • java android android-fragmentactivity mobile-application android-developer-api
    1个回答
    -1
    投票
    Attempt to invoke interface method 'int java.util.List.size()' on null reference在您的代码中是

    years。

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