본문 바로가기

안드로이드

토스트바, 스낵바, Dialog

217p

토스트는 Mainactivity위에 뜨는 거라서 MainActivity Context를 알아야지.

스낵바 어떤 View 를 정하면 내부적으로 해당 view의 Activity context를 알아가지고 거기에다가 띄워 줌.

 

p224

알림창은 새로운 Window를 작게 하나 만들어서 띄움. 그래서 context를 몰라도 된다. 좋은 점은 내가 어디 위치에 띄울지 정할 수 있네요. 하지만 전체 View위에 적을 것 같아요.

 

Toast

 

MainActivity.java

package com.linda.listviewex01;

import androidx.appcompat.app.AppCompatActivity;

import android.content.Context;
import android.os.Bundle;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {
private Context mContext = MainActivity.this;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Test.callToast(mContext);


    }
}

 

 

Test.java

package com.linda.listviewex01;

import android.content.Context;
import android.widget.Toast;

public class Test {
    public static void callToast(Context context){
        Toast.makeText(context, "안녕", Toast.LENGTH_SHORT).show();
    }
}

 

Snackbar

 

 

snackbar은 구글 머터리얼 gradle에 implementation해서 사용 할 수 있다. (싱크하고)

 

 

 

MainActivity.java

 


 

알림창 대화상자 보여주기 (Dialog)

 

 

 

 

package com.linda.listviewex01;

import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.app.AppCompatActivity;

import android.content.Context;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;


public class MainActivity extends AppCompatActivity {
private Context mContext = MainActivity.this;
private TextView tv;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);


        tv=findViewById(R.id.tv);


        Button button = findViewById(R.id.button);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                showMessage();
            }
        });

    }

    private void showMessage(){
        AlertDialog.Builder builder = new AlertDialog.Builder(this);
        builder.setTitle("안내");
        builder.setMessage("종료하시겠습니까?");
        builder.setIcon(android.R.drawable.ic_dialog_alert);

        builder.setPositiveButton("예", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                String message = "예 버튼이 눌렸습니다.";
                tv.setText(message);
            }
        });
        builder.setNegativeButton("아니오", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                String message = "아니오 버튼이 눌렸습니다.";
                tv.setText(message);
            }
        });

        AlertDialog dialog = builder.create();
        dialog.show();

    }
}

 


 

 

 

누구나 Activity Manager Service에 접근할 수 있는데 다른 인스타나 

Content provider = API : 다른 앱에서 들어와서 내 데이터 들고 갈 수 있는 거. 앱들끼리 접근해서 데이터 공유하기 위해한 것. 앱들마다 이 content provider(API)를 만들어 놔요. 

Application context가 이 API를 열어놔서 가능. Activity Manager Service를 통해서 content provider(API)에 접근합니다.