본문 바로가기
슬기로운 자바 개발자 생활/안드로이드 프로그래밍

대화상자 사용해보기(다이얼로그)

by 슬기로운 동네 형 2017. 2. 20.
반응형

구글 안드로이드 스튜디오에서 제공하는 스탠다드 대화상자는 아래 두개다.

1. Dialog

2. AlertDialog.Builder


1번은 안이쁘다. 그래서 잘 사용하지 않는다.

2번은 연습용으로 사용한다. 대부분 회사에서는 확장하거나 깃허브에서 이쁘고 사용하기 편한 라이브러리를 사용할거 같다. 그냥 내 추측...


레이아웃에 버튼하나 만든다.


<LinearLayout
android:orientation="vertical"
android:background="@color/colorAccent"
android:layout_width="match_parent"
android:layout_height="match_parent">


<Button
android:id="@+id/btnHi"
android:text="안녕하세요"
android:layout_width="match_parent"
android:layout_height="wrap_content" />

<Button
android:text="다이얼로그"
android:id="@+id/btnDir"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:onClick="mOnClick"
/>

</LinearLayout>
import android.content.DialogInterface;
import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;

public class MainActivity extends AppCompatActivity {

Button button,dButton;
public static String log = "MainActivity";

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

button = (Button) findViewById(R.id.btnHi);

button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {

Dialog dialog = new Dialog(MainActivity.this);
TextView textView = new TextView(MainActivity.this);
textView.setText("open dialog");
dialog.setContentView(textView);
dialog.setTitle("alert");
dialog.show();

}
});
}

public void mOnClick(View v){

AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("alert");
builder.setMessage("Hi myname is shim");
builder.setIcon(R.drawable.android);

builder.setPositiveButton("Closed", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Log.i(log,"Pushed Cloesd Button");
}
});

builder.setNegativeButton("Negati", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Log.i(log,"Pushed Negati Button");
}
});

builder.setNeutralButton("Neutral", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Log.i(log,"Pushed Neutral Button");
}
});
builder.show();
}

}

혹시나 잘 모르는 분들을 위해...

Dialog(??) 

?? 값은 문서를 보면 Context 다. getapplicationContext 넣으면 에러난다. 현재액티비티명(MainActivity.this)를 넣어야 한다.


버튼을 레이아웃에서 따로 onClick으로 정의해줬다면....this를 적어주면 된다.


위의 예제에서 AlerDialog.builder(this)의 경우 빌더의 생성자와 속성 설정 메서드 모두 빌더 자체에서 리턴한다. 그래서 축약으로 코딩 할 수 있다.


new AlertDialog.Builder(this)

.setTitle("Hi")

.setMessage("Open Alert")

.setIcon(R.drawable.androidImage)

.show();






  

반응형

댓글