안드로이드 : 액션바 제목설정, 뒤로가기 버튼 만들고 리스너 달기

안드로이드|2018. 12. 18. 10:54
반응형


@Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_third);


        ActionBar actionBar = getSupportActionBar();  //제목줄 객체 얻어오기

        actionBar.setTitle("안녕하세요");  //액션바 제목설정


        actionBar.setDisplayHomeAsUpEnabled(true);   //업버튼 <- 만들기

        //업버튼이 되려면 눌렀을 때 돌아갈 Activity를 지정해줘야 함

        //이 작업은 매니패스트에서 함

    }


매니패스트

<activity android:name=".ThirdActivity" android:parentActivityName=".MainActivity"></activity>

※ 뒤로가기를 하려면 백스택에 그 액티비티가 살아있어야 함


반응형

안드로이드 : 클릭 리스너 Long클릭시 Short 클릭 인식 안되게 하기

안드로이드|2018. 12. 14. 11:09
반응형

아래와 같이 한개의 버튼에 클릭 리스너를 두개 달 경우 롱 클릭 이후 숏클릭이 인식되는 문제가 있습니다.


이럴 경우엔 아래 Long클릭 리스너에서 리턴값을 true로 주면 되는데 여기서 리턴은 여기서 메시지를 모두 소비하고 끝낼것인지를 묻는 것입니다.



listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {

    @Override               

    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {

        

        Toast.makeText(MainActivity.this, "안녕", Toast.LENGTH_SHORT).show();

    }

});

listView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {

    @Override

    public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {

        Toast.makeText(MainActivity.this, "long click", Toast.LENGTH_SHORT).show();

        return true

    }

});



반응형

안드로이드 : 다이얼로그(Single / MultipleChoice)

안드로이드|2018. 12. 12. 15:32
반응형



clickBtn 메소드는 xml에서 onClick 속성을 이용한 것입니다.



public class MainActivity extends AppCompatActivity {

    String[] items = new String[] {"Apple", "Banana", "Orange", "Grape"};

    boolean[] checked = new boolean[] {true, false, true, false};

    int a = 0;

    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);

    }


    public void clickBtn(View view) {

        AlertDialog.Builder builder = new AlertDialog.Builder(this);

        //AlertDialog안에 static 이너 클래스인 Builder를 생성한 것임

        builder.setTitle("다이얼 로그");  //건축가에게 다이얼로그의 모양 설계 의뢰

        builder.setIcon(android.R.drawable.ic_dialog_alert);

        builder.setMessage("다이얼로그 테스트입니다.");

        builder.setPositiveButton("ok", new DialogInterface.OnClickListener() {

            @Override

            public void onClick(DialogInterface dialog, int which) {

                Toast.makeText(MainActivity.this, "OK", Toast.LENGTH_SHORT).show();

            }

        });

        builder.setNegativeButton("CANCEL", new DialogInterface.OnClickListener() {

            @Override

            public void onClick(DialogInterface dialog, int which) {

                Toast.makeText(MainActivity.this, "CANCEL", Toast.LENGTH_SHORT).show();

            }

        });

        AlertDialog dialog = builder.create();


        //다이얼로그 밖 터치시 기본 취소되는 걸 안닫히게 하기

        dialog.setCancelable(false);

        dialog.setCanceledOnTouchOutside(false);

        dialog.show();

    }


    public void clickBtn2(View view) {

        //리스트형

        AlertDialog.Builder builder = new AlertDialog.Builder(this);

        builder.setTitle("목록 다이얼로그");

        builder.setItems(items, new DialogInterface.OnClickListener() {

            @Override

            public void onClick(DialogInterface dialog, int which) {

                Toast.makeText(MainActivity.this, items[which], Toast.LENGTH_SHORT).show();

            }

        });

        builder.create().show();

    }


    public void clickBtn3(View view) {

        AlertDialog.Builder builder = new AlertDialog.Builder(this);

        builder.setTitle("Single Choice 다이얼로그");

        builder.setSingleChoiceItems(items, a, new DialogInterface.OnClickListener() {

            @Override                                 //1은 기본 선택 할것의 index 번호

            public void onClick(DialogInterface dialog, int which) {

                Toast.makeText(MainActivity.this, items[which], Toast.LENGTH_SHORT).show();

                a = which;

            }

        });

        builder.setPositiveButton("확인", new DialogInterface.OnClickListener() {

            @Override

            public void onClick(DialogInterface dialog, int which) {

            }

        });

        builder.create().show();

    }


    public void clickBtn4(View view) {

        AlertDialog.Builder builder = new AlertDialog.Builder(this);

        builder.setTitle("Multiple choice Item");

        builder.setMultiChoiceItems(items, checked, new DialogInterface.OnMultiChoiceClickListener() {

            @Override

            public void onClick(DialogInterface dialog, int which, boolean isChecked) {

                checked[which] = isChecked; //눌러서 바뀌었을때 값이 옴

            }

        });

        builder.setPositiveButton("확인", new DialogInterface.OnClickListener() {

            @Override

            public void onClick(DialogInterface dialog, int which) {

                String s = "";

                for(int i = 0; i < checked.length; i++) {

                    s += checked[i] + " ";

                }

                Toast.makeText(MainActivity.this, s, Toast.LENGTH_SHORT).show();

            }

        });

        builder.create().show();

    }

}

반응형

안드로이드 : 이미지와 텍스트가 포함된 토스트 띄우기

안드로이드|2018. 12. 12. 13:55
반응형

clickBtn은 xml에 버튼에서 onClick을 통해 만든 메소드입니다.


public void clickBtn(View view) {



        //기본 토스트 띄우기

        //Toast.makeText(this, R.string.toastMsg , Toast.LENGTH_SHORT).show();


        //전에 뜨는 토스트 취소하기 뜨게 하기

        /*if( t != null ) {

            t.cancel();

            t = null;

        }

        //Toast객체 생성

        t = Toast.makeText(this, "안녕하세요", Toast.LENGTH_SHORT);

        t.show();*/


        //토스트 뜨는 위치 조정

        /*Toast t = Toast.makeText(this,"aaaa",Toast.LENGTH_SHORT);

        t.setGravity(Gravity.CENTER, 0, 0);

        t.show();*/


        //토스트는 기본이 Text이므로 Custom View하여 그림 등으로 토스트 띄우기

        Toast t = Toast.makeText(this, "", Toast.LENGTH_LONG);

        t.setGravity(Gravity.CENTER, 0, 0);


        //자바로 만들기

        /*ImageView iv = new ImageView(this);

        iv.setImageResource(android.R.drawable.ic_lock_silent_mode);

        TextView tv = new TextView(this);

        tv.setText("음소거 모드");


        //여러개의 뷰를 넣으려면 ViewGroup으로 감싸서 넣기

        LinearLayout layout = new LinearLayout(this);

        layout.setOrientation(LinearLayout.VERTICAL);

        layout.addView(iv);

        layout.addView(tv);

        t.setView(layout);*/


        //원하는 View를 자바로 만들면 코드가 너무 지저분하므로 View 생성을 xml로 사용하기

        //- XML로 View 객체의 모양을 설계하고 자바의 객체로 생성시켜 사용하기

        //res 폴더 안에 layout 폴더 안에 있는 toast.xml 문서를 읽어서

        // 자바 객체로 생성(부풀리는 inflate)하는 능력을 가진 객체를

        //운영체제 대리인(Context)로부터 얻어오기

        //LayoutInflater inflater = getLayoutInflater();

        LinearLayout layout = (LinearLayout)getLayoutInflater().inflate(R.layout.toast, null);

        t.setView(layout);

        t.show();

    }

반응형