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

다른 액티비티의 레이아웃 화면 다이얼로그에 띄우는 방법

0 추천

case MotionEvent.ACTION_UP: 에 구현을 하려고합니다.

여기에 다이얼로그를띄우려고 하는데 다른 액티비티의 화면을 다이얼로그으ㅔ 뿌려주려고 합니다.

코드를 이렇게 했는데

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

public class AlwaysTopServiceTouch extends Service {

    private View mView;

    private WindowManager mManager;

    private WindowManager.LayoutParams mParams;

 

    ListActivity listActivity = new ListActivity();

   private float mTouchX, mTouchY;

    private int mViewX, mViewY;

    private boolean isMove = false;

 

 

    private OnTouchListener mViewTouchListener = new OnTouchListener() {

        @Override

        public boolean onTouch(View v, MotionEvent event) {

 

            Intent it = new Intent(v.getContext(), ListActivity.class);

 

            switch (event.getAction()) {

                case MotionEvent.ACTION_DOWN:

                    isMove = false;

 

                    mTouchX = event.getRawX();

                    mTouchY = event.getRawY();

                    mViewX = mParams.x;

                    mViewY = mParams.y;

 

                    break;

 

                case MotionEvent.ACTION_UP:

                    if (!isMove) {

                        //                        startActivity(it.addFlags(FLAG_ACTIVITY_NEW_TASK));

                        LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);

                        View view = inflater.inflate(R.layout.list, null);

 

                        AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(listActivity);

 

                        alertDialogBuilder.setTitle("목록");

                        alertDialogBuilder

                                .setView(view)

                                .setCancelable(false);

 

                    }

 

                    break;

Colored by Color Scripter

cs



널포인트에러가 뜹니다.

java.lang.NullPointerException: Attempt to invoke virtual method 'android.content.pm.ApplicationInfo android.content.Context.getApplicationInfo()' on a null object reference

 

원인은

AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(listActivity);


이코드구요.

 

다른 액티비티의 화면을 어떻게 가져와야하는지 잘 모르겠습니다.

어떻게 해야 가져올 수 있는건가요?

context를 ListActitivy에 선언해서 그걸 가져와야하나요?

 

 

브루스웨인 (8,580 포인트) 님이 2017년 7월 27일 질문
브루스웨인님이 2017년 7월 27일 수정

1개의 답변

0 추천
하지 말아야 할 서비스에서 UI를 띄우는 일을 하시네요. ㅡㅡ:  가급적 서비스에서 Broadcast Receiver를 통해서 Activity에서 띄우는 게 나을 겁니다.

아래를 사용하고 계시나요?

dialog.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT);

매니페스트에서 아래 지정.

<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>
Will Kim (43,170 포인트) 님이 2017년 7월 27일 답변
진짜 구현해보고싶은데 간단할거 같은데 잘 안되네요..
혼자 삽질중인데 답답하네요ㅠ
...