마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

ViewPager 관련 질문 드립니다.

0 추천

화면을 넘길때마다 숫자가 증감되도록 하고 싶은데 어디에서 코드가 잘못되었는지 모르겠어서 도움을 요청드립니다.

package com.example.a191215_viewpagertest;

import androidx.appcompat.app.AppCompatActivity;
import androidx.fragment.app.FragmentManager;
import androidx.viewpager.widget.ViewPager;

import android.os.Bundle;
import android.widget.Adapter;

import java.util.ArrayList;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        ViewPager viewPager = findViewById(R.id.pager);
        viewPager.setAdapter(new ItemFragmentAdapter(getSupportFragmentManager()));
    }
}

 

 

package com.example.a191215_viewpagertest;

import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;

public class ItemFragment extends Fragment {

    public static ItemFragment newInstance(int position) {
        Bundle args = new Bundle();
        position = position + 1;
        args.putInt("position", position);
        ItemFragment fragment = new ItemFragment();
        fragment.setArguments(args);
        return fragment;
    }

    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {

        View view = inflater.inflate(R.layout.item, container, false);
        TextView textView = view.findViewById(R.id.number);
        textView.setText(getArguments().getInt("position"));
        return view;
    }
}

 

 

package com.example.a191215_viewpagertest;

import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentManager;
import androidx.fragment.app.FragmentPagerAdapter;
import androidx.fragment.app.FragmentStatePagerAdapter;

public class ItemFragmentAdapter extends FragmentPagerAdapter {

    public ItemFragmentAdapter(FragmentManager fm) {
        super(fm);
    }

    @Override
    public Fragment getItem(int position) {

        return ItemFragment.newInstance(position);
    }

    @Override
    public int getCount() {
        return 10;
    }
}

 

 

코드는 다음과 같은데 제가 원하는건 TextView에 숫자를 표기하고 화면을 오른쪽 왼쪽으로 넘길때마다 숫자가 증감되게하는 프로그램입니다. 제대로 한거 같은데 NullPointException이 발생하네요.. 뭐가 문제인지 모르겠습니다. ㅠㅠ

 

 


- 에러메세지:

2019-12-15 22:35:26.718 4359-4359/com.example.a191215_viewpagertest E/AndroidRuntime: FATAL EXCEPTION: main

    Process: com.example.a191215_viewpagertest, PID: 4359

    java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.a191215_viewpagertest/com.example.a191215_viewpagertest.MainActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'int java.util.ArrayList.size()' on a null object reference

        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2913)

        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3048)

        at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78)

        at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108)

        at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68)

        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1808)

        at android.os.Handler.dispatchMessage(Handler.java:106)

        at android.os.Looper.loop(Looper.java:193)

        at android.app.ActivityThread.main(ActivityThread.java:6669)

        at java.lang.reflect.Method.invoke(Native Method)

        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)

        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)

     Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'int java.util.ArrayList.size()' on a null object reference

        at com.example.a191215_viewpagertest.ItemFragmentAdapter.getCount(ItemFragmentAdapter.java:25)

        at androidx.viewpager.widget.ViewPager.setAdapter(ViewPager.java:532)

        at com.example.a191215_viewpagertest.MainActivity.onCreate(MainActivity.java:22)

        at android.app.Activity.performCreate(Activity.java:7136)

        at android.app.Activity.performCreate(Activity.java:7127)

        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1271)

        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2893)

        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3048) 

        at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78) 

        at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108) 

        at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68) 

        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1808) 

        at android.os.Handler.dispatchMessage(Handler.java:106) 

        at android.os.Looper.loop(Looper.java:193) 

        at android.app.ActivityThread.main(ActivityThread.java:6669) 

        at java.lang.reflect.Method.invoke(Native Method) 

        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493) 

 

        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858) 

익명사용자 님이 2019년 12월 17일 질문
arraylist  값이 null 로 나오네요
java.lang.NullPointerException: Attempt to invoke virtual method 'int java.util.ArrayList.size()'
on a null object reference

답변 달기

· 글에 소스 코드 보기 좋게 넣는 법
· 질문에 대해 추가적인 질문이나 의견이 있으면 답변이 아니라 댓글로 달아주시기 바랍니다.
표시할 이름 (옵션):
개인정보: 당신의 이메일은 이 알림을 보내는데만 사용됩니다.
스팸 차단 검사:
스팸 검사를 다시 받지 않으려면 로그인하거나 혹은 가입 하세요.
...