values > style.xml 에서

우선 <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">

DarkActionBar > NoActionBar로 바꿔줍니다.

 

menu 폴더 밑에 xml 파일 하나 만들어줍니다.

toolbar.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">
    <item
        android:id="@+id/toolbar_download_button"
        android:title="다운로드"
        android:icon="@drawable/ic_file_download_black_24dp"
        app:showAsAction="ifRoom"/>
</menu>

 

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<androidx.coordinatorlayout.widget.CoordinatorLayout
    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">
    
    <com.google.android.material.appbar.AppBarLayout
        android:id="@+id/appBarLayout2"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:theme="@style/AppTheme.AppBarOverlay">

        <androidx.appcompat.widget.Toolbar
            xmlns:android="http://schemas.android.com/apk/res/android"
            android:id="@+id/toolbar"
            android:layout_width="match_parent"
            android:layout_height="wrap_content">

            <TextView
                android:id="@+id/toolbar_title"
                android:text="toolbar"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                style="@style/TextAppearance.AppCompat.Widget.ActionBar.Title"
                android:layout_gravity="center" />

        </androidx.appcompat.widget.Toolbar>
    </com.google.android.material.appbar.AppBarLayout>
</androidx.coordinatorlayout.widget.CoordinatorLayout>

MainActivity.java

OnCreate() 메서드에서 toolbar와 actionBar 설정을 해줍니다.

Ctrl + O 를 눌러서 onCreateOptionsMenu(), onOptionsItemSelected() 를 선언해줍니다.

public class BlockchainStorageDetailActivity extends AppCompatActivity {
    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_blockchain_storage_detail);

        Toolbar toolbar = findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);

        ActionBar actionBar = getSupportActionBar();
        actionBar.setDisplayShowTitleEnabled(false); // 기존 title 지우기
        actionBar.setDisplayHomeAsUpEnabled(true); // 뒤로가기 버튼 만들기
    }





    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        MenuInflater menuInflater = getMenuInflater();
        menuInflater.inflate(R.menu.toolbar_blockchain_storage_download, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(@NonNull MenuItem item) {
        switch (item.getItemId()){
            case R.id.toolbar_download_button:{
                break;
            }
            case android.R.id.home:
                finish();
                break;
        }
        return super.onOptionsItemSelected(item);
    }
}

onOptionsItemSelected() 메서드는 클릭 이벤트이니 case 선언 하고 이벤트 작성하시면 됩니다.

 

콜백함수란 다른 함수의 매개변수로 함수를 전달하고, 어떠한 이벤트가 발생한 후 매개변수로 전달한 함수가 다시 호출되는 것을 의미한다. callback은 쉽게 말하자면 어떤 일을 다른 객체에게 시키고, 그 일이 끝나는 것은 기다리지 않고 끝나고 부를 때까지 다른 일을 하는 것을 말한다. 만약 1번 함수를 실행을 하고 1번 함수의 실행이 끝마친 다음에 2번 함수를 실행해야 하는 경우가 생긴다면 콜백을 이용하면 된다.

 

일반적인 함수 구조

일반적으로는 파라미터를 받아 함수 내부에서 사용하여 결과값을 return 할 수 있는 구조로 되어 있다. 

 

콜백 함수 구조

콜백 함수는 다른 함수에 파라미터로 이용되는 함수이며 어떤 함수에 의해 호출되어지는 함수이다.

 

+ Recent posts