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

dialog에서 fragment로 integer 값을 리턴받고싶습니다.

0 추천
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
……………………………………………………………
switch (showFixMessage()){
    case 1:
        split = allText.split("\n");
        Log.d(TAG,"split[0] : "+split[0]+"split[1] : "+split[1]+"split[2] : "+split[2]);
        FragmentManager fragmentManager = getFragmentManager();
        FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
        fragmentTransaction.replace(R.id.fragment, EntryFragment.newInstance(split[0],split[1],split[2]));
        fragmentTransaction.commit();
        break;
    case 2:
        chooseScheduleList = dbHelper.getAllChooseScheduleData();
        Log.d(TAG,String.valueOf(chooseScheduleList.indexOf(textView.getText().toString())));
        break;
    case 3:
        Toast.makeText(getContext(),"취소하였습니다.",Toast.LENGTH_SHORT).show();
        break;
}
……………………………………………………………
   return view;
}
……………………………………………………………
private Integer showFixMessage() {
    AlertDialog.Builder builder = new AlertDialog.Builder(getContext());
    final Integer fixOrDelete[] = new Integer[1];
    builder.setTitle("안내");
    builder.setPositiveButton("수정", new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int which) {
            fixOrDelete[0] = 1;
        }
    });
    builder.setNegativeButton("삭제", new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int which) {
            fixOrDelete[0] = 2;
        }
    });
    builder.setNeutralButton("취속", new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int which) {
            fixOrDelete[0] = 3;
        }
    });
    AlertDialog dialog = builder.create();
    dialog.show();
    return fixOrDelete[0];
}
오류 내용은 다음과 같습니다.
E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.example.administrator.myscheduler2, PID: 15043
    java.lang.NullPointerException: Attempt to invoke virtual method 'int java.lang.Integer.intValue()' on a null object reference
        at com.example.administrator.myscheduler2.ScheduleFragment$1.onClick(ScheduleFragment.java:547)
        at android.view.View.performClick(View.java:6256)
        at android.view.View$PerformClick.run(View.java:24701)
        at android.os.Handler.handleCallback(Handler.java:789)
        at android.os.Handler.dispatchMessage(Handler.java:98)
        at android.os.Looper.loop(Looper.java:164)
        at android.app.ActivityThread.main(ActivityThread.java:6541)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767)

switch (showFixMessage()){
이부분에서 오류가 뜨고있는데 잘이해가 되지 않습니다. 도와주세요.
익명사용자 님이 2018년 10월 30일 질문

1개의 답변

0 추천
다이얼로그를 선택해서 결과 값을 받은 뒤에 처리되야할 정보를

다이얼로그를 띄우고 바로 처리 해서 그렇습니다.

해당 코드는 createView 에서 처리할만한 코드가 아닌거죠

코드에는 순서가 필요한데

1 2 3 4 5 가 아니고 1 5 로 실행 한겁니다.
aucd29 (218,050 포인트) 님이 2018년 10월 30일 답변
그런데 반대로 showFixMessage()에서 아예 스위치 이벤트를 각 버튼 온클릭리스너에 넣어서하면 제가 원하는대로 작동이 됩니다. 왜그런걸까요
...