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

다이얼로그를 만들고, 딜레이를 주는 방법에 대해서 질문있습니다.

0 추천

 

안녕하세요.

아래의 코드에서, 궁금한 부분이 있습니다. 아래는 버튼 클릭시에, 진행이 되는 코드인데.

커스텀다이얼로그를 띄우고 난 뒤에(.show) , 인텐트가 바로 호출되는것이 아니라 중간에 2~3초 정도 딜레이

를  주고싶은데 어떻게 중간에 delay를 줄수 있을까요 ㅜ

 

Custom_Dialog2 Access_Register = new Custom_Dialog2(Register.this);
Access_Register.setContentView(R.layout.activity_custom__dialog2);
Access_Register.setTitle("Custom Dialog");

TextView tv = (TextView) Access_Register.findViewById(R.id.Custom_TextView);
tv.setText("회원가입이 완료되었습니다.");

ImageView iv = (ImageView) Access_Register.findViewById(R.id.Thank_You_Img);
iv.setImageResource(R.drawable.welcome);

Access_Register.show();

Intent itent = new Intent(getBaseContext(),Login_Activity.class);
startActivity(itent);

finish();
Kind카인드 (3,600 포인트) 님이 2016년 12월 3일 질문

1개의 답변

0 추천
new Handler().postDelayed(new Runnable()
{
  @Override     public void run()
  {
    // 인텐트 호출
  }
}, 3000);

3000 으로 해서 3초 후 run 됩니다
블랙꽃 (1,250 포인트) 님이 2016년 12월 3일 답변
답변 감사드립니다 ㅠ

인텐트를 호출하는 과정에서, 아래와 같은 에러가 발생하는데 이유를 잘 모르겠습니다..
제가 원래 생각했던 부분은, 다이얼로그의 창이 뜨고 3초뒤에 Register.class로 넘어가던지 그게 아니라면
확인버튼을 누르면 Register.class로  이동을 하게 하는건데 아래와 같은 에러가 떠서 어떻게 해결해줘야할지..
모르겠서염

E/WindowManager: android.view.WindowLeaked: Activity ex.real_project.Register has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView{3b27e73f V.E..... R.....I. 0,0-640,560} that was originally added here
                     at android.view.ViewRootImpl.<init>(ViewRootImpl.java:392)
                     at android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:300)
                     at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:85)
                     at android.app.Dialog.show(Dialog.java:325)
                     at ex.real_project.Register$1.onClick(Register.java:77)

에러의 줄은 아래와 같습니다.
 Access_Register.show();

postdelay안쪽에 호출한 부분은, 단순한 다이얼로그 인텐트 호출 문장입니다 ㅠ
그리고 Access_Register.show() 이부분에서 에러가 뜹니다.

 else if(!First_Edit.isEmpty() && !Second_Edit.isEmpty() && !Third_Edit.isEmpty())
                {
                    Toast toast = Toast.makeText(getApplicationContext(), "회원가입이 완료되었습니다", Toast.LENGTH_SHORT);
                    TextView Success_Register = (TextView) toast.getView().findViewById(android.R.id.message);
                    Success_Register.setTextColor(Color.BLUE);
                    toast.show();
                    Custom_Dialog2 Access_Register = new Custom_Dialog2(Register.this);
                    Access_Register.setContentView(R.layout.activity_custom__dialog2);
                    TextView tv = (TextView) Access_Register.findViewById(R.id.Custom_TextView);
                    tv.setText("회원가입이 완료되었습니다.");
                    ImageView iv = (ImageView) Access_Register.findViewById(R.id.Thank_You_Img);
                    iv.setImageResource(R.drawable.welcome);
                    Access_Register.show();

                    new Handler().postDelayed(new Runnable() {
                        @Override
                        public void run() {
                            Intent itent = new Intent(getBaseContext(),Login_Activity.class);
                            startActivity(itent);
                        }
                    },3000);

                    finish();
                }



@@@@@@@@@@@@@@@

혹시나 해서, 아래쪽에 Dialog_Custom2에 대한 내용을 적어보겠습니다.

import android.app.Dialog;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.Window;
import android.widget.Button;
public class Custom_Dialog2 extends Dialog implements View.OnClickListener{

    Button btn;
    public Custom_Dialog2(Context context) {
        super(context);
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.activity_custom__dialog2);
        btn = (Button) findViewById(R.id.Custom_Button2);
        btn.setOnClickListener(this);
    }

    public void onClick(View view) {
        if (view.getId() == R.id.Custom_Button2) {
            if (isShowing()) {

                dismiss();
            }
        }
    }
}
...