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

센서이벤트 리스너 와 프래그먼트 (메인 엑티비티와 프래그먼트 통신문제)

0 추천
public Fragment1 Heart_frag;
public Fragment2 Accel_frag;
public Fragment3 Baro_frag;
public Fragment4 Status_frag;




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

    Heart_frag = new Fragment1();
    Accel_frag = new Fragment2();
    Baro_frag = new Fragment3();
    Status_frag = new Fragment4();

    mViewPager = (ViewPager) findViewById(R.id.pager);

    final FragmentAdapter adapter = new FragmentAdapter(
            getFragmentManager());
    adapter.addFragment(Heart_frag);
    adapter.addFragment(Accel_frag);
    adapter.addFragment(Baro_frag);
    adapter.addFragment(Status_frag);

    mViewPager.setAdapter(adapter);
    mViewPager.setOnPageChangeListener(new OnPageChangeListener() {

        @Override
        public void onPageSelected(int position) {

           /*  switch(position) {
                case 0:
                    //Heart_frag.test("test");
                    break;
                case 1:
                    Accel_frag.test(Acc_Lx[j]);
                    break;
                case 2:
                    //Baro_frag.test("test");
                    break;
                default:
                    break;
            } */



        }

        @Override
        public void onPageScrolled(int position, float positionOffset,
                                   int positionOffsetPixels) {
        }

        @Override
        public void onPageScrollStateChanged(int state) {
        }
    });

    mGestureDetector = new GestureDetector(this, new LongPressListener());


    // 센서 메인 시작

중략 !!!!
public void onSensorChanged(SensorEvent event) {

    if (event.sensor.getType() == Sensor.TYPE_HEART_RATE) {

       Heart_frag.HP_setText((int)values[0]);
    }
    if(event.sensor.getType() ==  Sensor.TYPE_GYROSCOPE) {
        Gyro_frag. gyro_setText (values[0],value[1],value[2]);


    }

    if(event.sensor.getType() == Sensor.TYPE_GRAVITY) {

        Accel_frag.Acc_setText(Acc_Lx[j], Acc_Ly[j], Acc_Lz[j]);

      
     }

fragment1

public void Acc_setText(float X, float Y, float Z) {
 ((TextView)(this.getActivity().findViewById(R.id.title2_1))).setText("" + Math.round(X));


}
기본적으로 하려는 메인엑티티의 센서이벤트에서 값을 읽을때마다 해당되는 각프라그먼트의 텍스트 필드에 값을 리프레쉬 해주는 것입니다. 
우선 작동은 됩니다 단1~2 프래그먼트까지만 3번째 프라그먼트에서 셋텍스트 함수를 날릴때 무조건 에러가 납니다 왜나는지 정말 모르겠습니다, 순서를 바꿔도 3번째 프래그먼트에서 에러가 떡하니 나니 왜 그러는지 모르겠습니다. 

java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.TextView.setText(java.lang.CharSequence)' on a null object reference
이런 메시지가 뜨구요  세번째 프라그먼트 또한 1번이나 2번이나 똑같이 복붙해서 아이디만 바꿔기에 안되는게 이해가 가지 않습니다 부탁드립니다.
민쿙이 (120 포인트) 님이 2016년 2월 22일 질문
글씨가 다 잘려서 알아보기 힘드네요

답변 달기

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