728x90
반응형
SMALL
저번 포스팅에 이어서 메모장을 마무리 해보도록 하겠습니다.
메모장이 마무리 하기위해서 안드로이드의 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();는 주석처리해서 작동이 안되게 해놓았기 때문에
이 것은 여러분들이 알아서 사용하시면 되십니다.
728x90
반응형
LIST
'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 |