#android-studio #nullpointerexception
#android-studio #исключение nullpointerexception
Вопрос:
Мое приложение запускает сглаживание в Android studio и извлекает данные json в режиме рециркуляции. но когда я устанавливаю его на устройство с помощью .apk, он выходит из строя и выдает ошибку исключения nullpointexception при использовании collections.addall. вот код, в котором я добавляю данные в список. Я уже инициализировал список
public
class Fragment11 extends Fragment {
private AdapterHome adapter;
private LinearLayoutManager manager;
private final List<VideoYT> videoList = new ArrayList<>();
private boolean isScroll = false;
private int currentItem, totalItem, scrollOutItem;
private String nextPageToken = "";
public Fragment11() {
// Required empty public constructor
}
@Override
public
View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_11, container, false);
// Inflate the layout for this fragment
RecyclerView rv = view.findViewById(R.id.recyclerView);
adapter = new AdapterHome(getContext(),videoList);
manager = new LinearLayoutManager(getContext());
rv.setAdapter(adapter);
rv.setLayoutManager(manager);
rv.addOnScrollListener(new RecyclerView.OnScrollListener() {
@Override
public void onScrollStateChanged(@NonNull RecyclerView recyclerView, int newState) {
super.onScrollStateChanged(recyclerView, newState);
if (newState == AbsListView.OnScrollListener.SCROLL_STATE_TOUCH_SCROLL){
isScroll = true;
}
}
@Override
public void onScrolled(@NonNull RecyclerView recyclerView, int dx, int dy) {
super.onScrolled(recyclerView, dx, dy);
currentItem = manager.getChildCount();
totalItem = manager.getItemCount();
scrollOutItem = manager.findFirstVisibleItemPosition();
if (isScroll amp;amp; (currentItem scrollOutItem == totalItem)){
isScroll = false;
getJson();
}
}
});
if (videoList.size() == 0){
getJson();
}
return view;
}
private void getJson() {
String url = YoutubeAPI.BASE_URL YoutubeAPI.sch "key=" getResources().getString(R.string.Developer_Key) YoutubeAPI.chid1 YoutubeAPI.mx YoutubeAPI.ord1
YoutubeAPI.part;
if (nextPageToken != ""){
url = url YoutubeAPI.NPT nextPageToken;
}
if (nextPageToken == null){
return;
}
Call<ModelHome> data = YoutubeAPI.getVideo().getHomeVideo(url);
data.enqueue(new Callback<ModelHome>() {
@Override
public void onResponse(Call<ModelHome> call, Response<ModelHome> response) {
if (response.errorBody() != null){
Log.w(TAG, "onResponse: " response.errorBody() );
try {
Toast.makeText(getContext(), response.errorBody().string(), Toast.LENGTH_SHORT).show();
} catch (IOException e) {
e.printStackTrace();
}
} else {
ModelHome mh = response.body();
assert mh != null;
videoList.addAll(mh.getItems());
adapter.notifyDataSetChanged();
if (mh.getNextPageToken() != null){
nextPageToken = mh.getNextPageToken();
}
}
}
@Override
public void onFailure(Call<ModelHome> call, Throwable t) {
Log.e(TAG, "onFailure: ", t);
Toast.makeText(getContext(), t.getMessage(), Toast.LENGTH_SHORT).show();
}
});
}
}
и это ошибка
2020-11-27 08:40:19.320 7050-7050/? E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.currentmedia.cokestudio, PID: 7050
java.lang.NullPointerException: Attempt to invoke interface method 'java.lang.Object[] java.util.Collection.toArray()' on a null object reference
at java.util.ArrayList.addAll(ArrayList.java:588)
at e.b$b.a(:10)
at j.l$b$a$a.run(Unknown Source:37)
at android.os.Handler.handleCallback(Handler.java:790)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:7025)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:441)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1408)
2020-11-27 08:40:20.300 2733-2850/? E/IptablesRestoreController: [iptables debug]iptables-restore execute *filter
-D fw_powersave -m owner --uid-owner 99047 -j RETURN
COMMIT
2020-11-27 08:40:20.314 2733-2850/? E/IptablesRestoreController: [iptables debug]iptables-restore execute done *filter
-D fw_powersave -m owner --uid-owner 99047 -j RETURN
COMMIT
, res : 0
2020-11-27 08:40:20.317 2733-2850/? E/IptablesRestoreController: [iptables debug]iptables-restore execute *filter
-D fw_powersave -m owner --uid-owner 10434 -j RETURN
COMMIT
Пожалуйста, предложите мне какое-нибудь решение.
Комментарии:
1.
mh.getItems()
виновник. Каков его возвращаемый тип?2. это список массивов с данными видеороликов YouTube
3. но когда приложение запускается в Android Studio, видео загружается успешно, а при установке apk приложение вылетает с указанной выше ошибкой
4. распечатайте то, что он возвращает в журнале.
5. он возвращает список видео, но при установке apk выдает ошибку нулевой точки