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

고수님들의 도움이 필요 합니다(초급 개발자입니다)

0 추천

안녕하세요 지금 어플을 만들고 있는 대학생입니다

모르는것이 있어 고수님들의 의견이 듣고 싶어 글을 적게되었습니다

소스들을 다 적을수 없어서 블로그에 소스를 적어 보았습니다.

http://blog.naver.com/ars1223/220543254605 는

JSON_Fragment 부분 입니다.

http://blog.naver.com/ars1223/220543254937

MainActivity 부분 입니다.

키 이벤트를 주었으며

switch (sp1) {
            case 0:
                pool.play(pool1, 1, 1, 0, 1, 1);
                break;
            case 1:
                pool.play(pool2, 1, 1, 0, 1, 1);
                break;
            case 2:
                pool.play(pool3, 1, 1, 0, 1, 1);
                break;
            case 3:
                pool.play(pool4, 1, 1, 0, 1, 1);
                break;

        }
                    JSON_Fragment.sms();
    }

소리와  함께 JSON_Fragment.sms를 실행 하고자 합니다.

public static void sms(){
    test_btn.performClick();
    Log.e("SIXSENS", "ㅂ2ㅂ2");

}
이쪽 부분입니다. 
제가 하고 싶은것은 Soundpool을 실행 하고 
test_btn 버튼을 강제로 실행 시키는 것입니다.
Fragment를 이용해서 작업중입니다. 
어떻게 해야 test_btn를 함께 진행 시킬수 있을까요...
 
밑에는 블로그 형식처럼 했을떄 나타나는  에러 입니다.
 
 
11-14 00:56:57.509 3738-3738/com.example.administrator.myapplication E/AndroidRuntime: java.lang.NullPointerException: Attempt to invoke virtual method 'boolean android.widget.Button.performClick()' on a null object reference
11-14 00:56:57.509 3738-3738/com.example.administrator.myapplication E/AndroidRuntime:     at com.example.administrator.myapplication.JSON_Fragment.stae(JSON_Fragment.java:132)
11-14 00:56:57.509 3738-3738/com.example.administrator.myapplication E/AndroidRuntime:     at com.example.administrator.myapplication.MainActivity.onKeyDown(MainActivity.java:289)
리뷰즈 (480 포인트) 님이 2015년 11월 19일 질문

2개의 답변

0 추천
현재의 test_btn 는 static 형태이므로 해당 fragment 가 instance 되지도 않았는데 실행될 가능성이 존재합니다.

즉 test_btn 이 null 인거죠

화면 구성 자체는 한번에 한 화면이 나타나게 끔 되어 있기 때문에 현재 프로젝트 구조상 동시 실행은 어려워 보입니다.

JSON fragment 에 설정값을 preference 에 저장되어 있으니 click 에 해당하는 기능을 별도로 빼고 그 부분을 공통적으로 사용해보세요
aucd29 (218,390 포인트) 님이 2015년 11월 19일 답변
0 추천
당장은 btn 쪽 널참조를 해결하더라도 다른 UI 클래스에서 널참조가 발생할껍니다.

먼저답변하신분처럼 화면자체가 로드되지 않았기 때문이죠.

방법은 두가지가 있습니다. Application 클래스로 따로 SMS 발송만 처리하고 나머지는 화면이 로드될때

보여주는 방식(먼저 답변하신 분과 동일한 방법임)

두번째로는 처음 해당화면실행시 프래그먼트를 모두 로딩을 시키는 방법이죠.

몇년전에 프래그먼트 로딩문제때문에 5개의 프래그먼트를 코드상으로 빠르게 이동시키면서 다시

처음으로 이동시켜서 '선로딩'이 되도록 만든 기억이 있네요 비추하지만 동작은 할껍니다.
라쎄린드 (25,460 포인트) 님이 2015년 11월 19일 답변
라쎄린드님이 2015년 11월 19일 수정
...