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

intent로 android dialog 호출하기

0 추천

안녕하세요 혼자 고민끝에 도움이 필요해서 질문드립니다.

intent를 이용하여 android Dialog를 호출하고싶은데요

Dialog를 호출시 디폴트 생성자가없어 context값을 넣어줘야되는데

intent를 이용하여 호출시 생성자에 context값을 넣는 방법을 몰라 질문합니다......

예를 들면

package com.android.aaa;

class A extend Dialog{

...

    public A(Context context){

    ....

    }

}

Dialog인 A 클래스를 다른곳에서 intent를 사용하여 호출하고싶습니다. 디폴트생성자는 없습니다..

 

도움부탁드립니다.

 

두마두 (120 포인트) 님이 2013년 12월 2일 질문

2개의 답변

0 추천
인텐트는 activity를 호출할 때 사용됩니다. dialog를 확장한 A클래스는 intent 없이도 호출할 수 있는 것 같은데요??
방귀과장 (18,940 포인트) 님이 2013년 12월 2일 답변
아예 다른패키지에서 호출하는 것이라서.. intent를 사용할려고 합니다.
intnet없이 호출하는 방법은 무엇이 있나요?
dialog = new A(context).message(
                    R.string.nothing_added_to_bookmark).buttonClick(
                    new ButtonClickListener() {
                        @Override
                        public void onClick(Dialog dialog) {
                            dialog.dismiss();
                        }
                    });
            dialog.show();

위 코드를 응용하시면 될꺼에요.
근데 A 클래스가 제가 호출하려는 패키지와 완전 별개의 패키지라서 패키지명이나 클래스명을 따로 선언해줘야되는데 그부분이 없는데 가능할까요?
A 클래스를 import하면 될 것 같은데요??

아니면 위의 예제 코드에서 클래스명 앞에 패키지까지 붙여서 명시할 수도 있어요.
그럼 하나만 더 질문드릴게요 import는 불가능하고 완전 다른앱이라서 클래스명을 패키지명을 붙여서 명시한다면 저기 context parmeter도 같은형식으로도 가능한건가요? context에 쓰일 값도 다른앱쪽이라서..
다른 앱의 다이얼로그를 띄우고 싶어하시는군요.

먼저 인텐트를 통해서는 A 클래스에 바로 접근할 수 없어요. 인텐트는 액티비티에서 받는 것입니다. 그러니까 다른 앱의 특정 액티비티에서 인텐트를 받게 되는데 거기서 다이얼로그를 띄우는 코드를 넣어야 합니다.

인텐트를 받기 위해서는 다른 앱의 매니페스트 파일에서 특정 액티비티에 intentFilter를 달아야 합니다. 그리고 다이얼로그를 띄우는 코드도 삽입해야 합니다.
다른 앱의 경우에는 위에서 알려드린대로 패키지명을 클래스명앞에서 붙이는 방법이 효력이 없습니다. 다른 방법은 없을 겁니다.
아하 그렇군요 일단 액티비티(B)를 통해서 다이얼로그를 띄우는 건 구현을 했는데 (data값을 사용하여 getIntent 로 조건을 거니 되더군요) 혹시나 액티비티(B)를 안거치고 바로 띄울수는 없나해서요... 문제점이 원소스를 수정해야되는것과 다이얼로그에서 back키를 누를시 호출한 액티비티가 아니라 액티비티(B)로 가더라고요.... flag값을 사용하면 될거같긴한데 어떤플래그를 써야될지 모르겠네요 이부분도 도움을 좀받을수 있을까요?
다이얼로그에서 back 키를 누를 때 B 액티비티를 finish 시키는 방법을 쓰시면 될 것 같은데요. 그러면 호출한 액티비티가 화면에 표시될 겁니다.

다이얼로그를 확장한 클래스에 back 키 리스너를 구현하거나 이미 있는 코드를 수정하시면 될 것 같네요.
근데 문제는 이 다이얼로그를 이앱에서만 사용하는것이아니라서...문제내요 이동작에서만 다르게 동작을 시켜야하니깐.. 흠
flag 변수를 사용하여 어떤 곳에서 왔는지 구분하여 처리하면 될 듯하네요.
0 추천
A앱에서 B앱의 다이얼로그를 띄우고 싶다는 건가요?
A,B앱을 모두 직접 만드시는 거라면,
A앱에서 B앱의 액티비티를 띄우고, 해당 액티비티에서 다이얼로그를 띄우는 식으로 구현하면 됩니다.
익명사용자 님이 2013년 12월 2일 답변
인텐트에 플래그값을 넣어서 B앱의 액티비티를 띠우고 플래그값을 검사하여 다이얼로그를 띄우라는 말씀이신가요?
혹시 B앱 액티비티를 거치지않고 바로 다이얼로그로 가는 방법이있나해서요..
...