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

간단한 팝업창 관련해서 만드는 방법이 궁금합니다.

0 추천

다이얼 로그 관련해서 어려워보여서 최대한 쉬운 예제로 구성된 아래의 블로그를 통해서 만들고 있습니다.

http://khie74.tistory.com/1169521457 

블로그를 최대한 따라해보려고 하는데..

그런데 아래의 dismiss() 부분에 에러가 뜨는데 어떻게 바꾸어주어야 할지..

에러 내용은 can not reslove method 'dismiss()' 입니다. dismiss가 정의되지 않았다는건데..

어떻게 해야, 버튼을 눌렀을때 위의 블로그처럼 간단한 메세지창이 뜰까요..

문자수가 8000자가 넘어서 아래의 답변에 살짝 이어서 달아보겠습니다.

 

<xml 부분>

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/activity_custom__dialog"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:background="#363636"
    tools:context="ex.real_project.Custom_Dialog">

    <TextView
        android:id="@+id/Custom_TextView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="커스텀 다이얼로그 입니다."
        android:layout_centerHorizontal="true"
        android:layout_alignParentTop="true"
        />

    <Button
        android:id="@+id/Custom_Button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="눌러주세요"
        android:layout_centerHorizontal="true"
        android:layout_below="@+id/Custom_TextView"
        />

</RelativeLayout>
공산당 (1,960 포인트) 님이 2016년 10월 28일 질문
< 자바부분 >

package ex.real_project;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.view.Window;
import android.widget.Button;

public class Custom_Dialog extends AppCompatActivity {

    Button btn;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        requestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.activity_custom__dialog);

        btn = (Button) findViewById(R.id.Custom_Button);
        btn.setOnClickListener((View.OnClickListener) this);
    }

    public void onClick(View view)
    {
        if(view == btn)
        {
            dismiss();
        }
    }
}

2개의 답변

0 추천
 
채택된 답변
익명사용자 님이 2016년 10월 28일 답변
공산당님이 2016년 10월 28일 채택됨
감사합니다 해결했습니다 감사합니다.
0 추천
activity 와 dialog 차이를 검색해보세요

일단 new Intent 를 통해서 해당 activity 를 띄운거라면 dismiss() 가 아니고 finish() 가 되어야 합니다.
aucd29 (218,390 포인트) 님이 2016년 10월 28일 답변
윽..

한번만 봐주실수 있나요ㅠ 팝업코드에서 에러는 없는데.. 이미지를 누를때 동작을 시키게 하고 싶은데 이게 왜 안되는건지 제가 초보라서.. 에러코드를 보아도 잘 모르겠습니다. 제가 만든 벨 이미지 클릭시에 움직이게 하고싶어요.




<First_Movie에 있는 이미지 부분에 대한 온클릭 코드>
Bell = (ImageView) findViewById(R.id.bell_image);
Bell.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        Custom_Dialog dialog = new Custom_Dialog(this);
        dialog.show();
    }
});




[.xml 액티비티]
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/activity_custom__dialog"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:layout_margin="10dp"
    android:background="#363636"
    tools:context="ex.real_project.Custom_Dialog">

    <TextView
        android:id="@+id/Custom_TextView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="커스텀 다이얼로그 입니다."
        android:layout_centerHorizontal="true"
        android:layout_alignParentTop="true"
        />

    <Button
        android:id="@+id/Custom_Button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="눌러주세요"
        android:layout_centerHorizontal="true"
        android:layout_below="@+id/Custom_TextView"
        />

</RelativeLayout>





[자바 액티비티]
package ex.real_project;

import android.app.Dialog;
import android.content.Context;
import android.content.DialogInterface;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.view.Window;
import android.widget.Button;

public class Custom_Dialog extends Dialog implements View.OnClickListener {

    Button btn;

    public Custom_Dialog(View.OnClickListener context) {
        super((Context) context);

        requestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.activity_custom__dialog);

        btn = (Button) findViewById(R.id.Custom_Button);
        btn.setOnClickListener(this);
    }

    public void onClick(View view) {
        if (view.getId() == R.id.Custom_Button) {
            if (isShowing()) {
                dismiss();
            }
        }
    }
}





[에러코드..]

E/AndroidRuntime: FATAL EXCEPTION: main
                  Process: ex.real_project, PID: 29046
                  java.lang.ClassCastException: ex.real_project.First_Movie$3 cannot be cast to android.content.Context
                      at ex.real_project.Custom_Dialog.<init>(Custom_Dialog.java:0)
                      at ex.real_project.First_Movie$3.onClick(First_Movie.java:53)
                      at android.view.View.performClick(View.java:4793)
                      at android.view.View$PerformClick.run(View.java:19950)
                      at android.os.Handler.handleCallback(Handler.java:739)
                      at android.os.Handler.dispatchMessage(Handler.java:95)
                      at android.os.Looper.loop(Looper.java:135)
                      at android.app.ActivityThread.main(ActivityThread.java:5593)
                      at java.lang.reflect.Method.invoke(Native Method)
                      at java.lang.reflect.Method.invoke(Method.java:372)
                      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:972)
                      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767)
Custom_Dialog 는 Context 를 전달해야 하는데 click listener 를 전달하고 있고
context 가 들어갈 자리에 listener 를 넣으니 casting 오류가 나고 있는 겁니다.
아하 ㅠ 감사합니다 해결했습니다.
...