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)에 접근합니다.
'안드로이드' 카테고리의 다른 글
RecyclerView (0) | 2020.07.23 |
---|---|
ListView (RecyclerView를 쓰는 이유를 알기위해서) (0) | 2020.07.22 |
코드에 이상 없는데 에러가 생길 때 (0) | 2020.07.22 |
화면전환 - onNavigationItemSelected + 코드 나눠서 정리 (0) | 2020.07.22 |
SDK버전 설정하기 (0) | 2020.07.21 |