저번 포스팅에 이어서 메모장을 마무리 해보도록 하겠습니다.
메모장이 마무리 하기위해서 안드로이드의 drawable 그림을 이용해서 만들어 보았습니다.
일단 drawable 그림을 넣는 것은 생략하기로 해보겠습니다.
그리고 menu를 res파일에 집어넣어서 activity_menu.xml의 버튼을 활용하였으며, 앱의 상태와 소스를
확인해보도록 합시다~!! ㅇㅅㅇ;;

res -> New -> Directory 그림을 누르면 menu라는 파일을 집어 넣을 수 있으며, 그 안에 Android Resource File
도 넣어주도록 해보죠~
그러면 이제 소스코드와 디버깅 내용을 살펴보도록 할까요~
일단 activity_main.xml에 대한 내용부터 살펴보지요~
- activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/activity_main"
tools:context=".MainActivity">
<EditText
android:id="@+id/editText"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="top"
android:hint="메모 할 내용을 입력하세요." />
</LinearLayout>
여기서 tools:context라는 부분에 연결된 class를 꼭 넣어주도록 합시다~
넣어주지 않으면 안드로이드스튜디오 3.0이상정도되면 링크가 연결되지 않았다고 나오실 것 입니다.
그리고 menu집어넣은 xml파일을 살펴보도록 하지요~
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent">
<item
android:id="@+id/save"
android:icon="@drawable/ic_save_black_24dp"
app:showAsAction="always"
android:title="저장" />
<item
android:id="@+id/share"
android:title="공유"
android:icon="@drawable/ic_share_black_24dp"
app:showAsAction="always"/>
<item
android:id="@+id/option"
android:title="설정"
android:icon="@drawable/ic_settings_black_24dp"
app:showAsAction="always|withText"/>
</menu>
이렇게 추가해주시고요. drawable 추가해준 그림들을 기억해서 나중에 애뮬레이터가 실행되었을 때,
상태 확인을 해주면 됩니다.
그리고 마지막으로 MainActivity.java 소소를 살펴보겠습니다~!!
- MainActivity.java
package kr.android.todolist;
import android.Manifest;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.pm.PackageManager;
import android.graphics.Color;
import android.os.Build;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.ArrayAdapter;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.Toast;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.app.AppCompatActivity;
public class MainActivity extends AppCompatActivity {
String[] permission_list = {
Manifest.permission.WRITE_CONTACTS
};
EditText editText;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
/*checkPermission();*/
editText = (EditText) findViewById(R.id.editText);
SharedPreferences sharedPreferences = getSharedPreferences("first", MODE_PRIVATE);
String savedString = sharedPreferences.getString("sampleString", "");
editText.setText(savedString);
}
public void checkPermission(){
//현재 안드로이드 버전이 6.0미만이면 메서드를 종료한다.
if(Build.VERSION.SDK_INT < Build.VERSION_CODES.M)
return;
for(String permission : permission_list){
//권한 허용 여부를 확인한다.
int chk = checkCallingOrSelfPermission(permission);
if(chk == PackageManager.PERMISSION_DENIED){
//권한 허용을여부를 확인하는 창을 띄운다
requestPermissions(permission_list,0);
}
}
}
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
if(requestCode==0)
{
for(int i=0; i<grantResults.length; i++)
{
//허용됬다면
if(grantResults[i]== PackageManager.PERMISSION_GRANTED){
}
else {
Toast.makeText(getApplicationContext(),"앱권한설정하세요",Toast.LENGTH_LONG).show();
finish();
}
}
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_menu, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
switch (id) {
case R.id.save:
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
builder.setTitle("SAVE");
builder.setMessage("저장하시겠습니까?");
builder.setIcon(android.R.drawable.ic_dialog_alert);
builder.setPositiveButton("예", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
SharedPreferences sharedPreferences = getSharedPreferences("first", MODE_PRIVATE);
SharedPreferences.Editor sharedPreferencesEditor = sharedPreferences.edit();
// 데이터를 기록한다.
sharedPreferencesEditor.putString("sampleString", editText.getText().toString());
sharedPreferencesEditor.apply();
Toast.makeText(MainActivity.this, editText.getText() + "이(가) 저장되었습니다.", Toast.LENGTH_LONG).show();
}
});
builder.setNegativeButton("아니오", null);
builder.create().show();
return true;
case R.id.share:
Intent sendIntent = new Intent();
sendIntent.setAction(Intent.ACTION_SEND);
sendIntent.putExtra(Intent.EXTRA_TEXT, editText.getText().toString());
sendIntent.setType("text/plan");
sendIntent.createChooser(sendIntent, "");
startActivity(sendIntent);
return true;
case R.id.option:
AlertDialog.Builder alertBuilder = new AlertDialog.Builder(this);
alertBuilder.setIcon(R.drawable.ic_settings_black_24dp);
alertBuilder.setTitle("어느 색으로 하시겠습니까?");
// List Adapter 생성
final ArrayAdapter adapter = new ArrayAdapter(
this,
android.R.layout.select_dialog_singlechoice);
adapter.add("RED");
adapter.add("GREEN");
adapter.add("BLUE");
adapter.add("기본값 설정");
// 버튼 생성
alertBuilder.setNegativeButton("취소",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,
int which) {
dialog.dismiss();
}
});
alertBuilder.setAdapter(adapter,
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,
int id) {
LinearLayout activity_main = (LinearLayout) findViewById(R.id.activity_main);
switch (id){
case 0: editText.setTextColor(Color.rgb(255,0,0)); break;
case 1: editText.setTextColor(Color.rgb(0,255,0)); break;
case 2: editText.setTextColor(Color.rgb(0,0,255)); break;
case 4: editText.setTextColor(Color.rgb(0,0,0)); break;
}
// AlertDialog 안에 있는 AlertDialog
String strName = adapter.getItem(id);
}
});
alertBuilder.show();
break;
}
return super.onOptionsItemSelected(item);
}
}
이런 식으로 처리해주었고요.
api권한 부분인 checkPermission();는 주석처리해서 작동이 안되게 해놓았기 때문에
이 것은 여러분들이 알아서 사용하시면 되십니다.






'IT 관련,, > 안드로이드(java, kotlin등등) 관련 내용' 카테고리의 다른 글
[android/개발자]안드로이드 탐색기 앱 만들기~! (0) | 2019.12.21 |
---|---|
[android/개발자]안드로이드 메모장 앱 만들기 및 권한설정-1 (0) | 2019.09.28 |
[android/개발자]웹 검색을 실행하기 위한 묵시적 인텐트를 정의하기~ (0) | 2019.08.26 |
[android/개발자]webview이용해서 사이트 연동하기~ (0) | 2019.08.23 |
[android/개발자]안드로이드 api23이상, 권한 요청 해주기~ (0) | 2019.07.28 |