본문 바로가기
모바일개발(Mobile Dev)/안드로이드개발(Android)

how to use option menu icon each Toolbar in Fragment

by 테크한스 2017. 7. 1.
반응형

written by http://gwpark.tistory.com/1993




[ \res\menu\menu_one.xml ]

<menu xmlns:android="http://schemas.android.com/apk/res/android" >
    
    <item android:id="@+id/menu_one"
        android:title="menu_one"
        android:showAsAction="always" />
    
</menu>



[ \res\menu\menu_two.xml ]

<menu xmlns:android="http://schemas.android.com/apk/res/android" >
    
    <item android:id="@+id/menu_two"
        android:title="menu_two"
        android:showAsAction="always" />
    
</menu>



[ FragmentOne.java ]

public class FragmentOne extends Fragment {
    
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        
        // if this is set true,
        // Activity.onCreateOptionsMenu will call Fragment.onCreateOptionsMenu
        // Activity.onOptionsItemSelected will call Fragment.onOptionsItemSelected
        setHasOptionsMenu(true);    

        return null;
    }
    
    @Override
    public void onResume() {
        super.onResume();
        // destroy all menu and re-call onCreateOptionsMenu
        getActivity().invalidateOptionsMenu();  
    }

    @Override
    public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
        super.onCreateOptionsMenu(menu, inflater);
        inflater.inflate(R.menu.menu_one, menu);
    }
    
    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch(item.getItemId()) {
        case R.id.menu_one :
            String message = "menu_one is selected";
            Toast.makeText(getActivity(), message, Toast.LENGTH_SHORT).show();
            break;
        }
        return super.onOptionsItemSelected(item);
    }
  
}



[ FragmentTwo.java ]

public class FragmentTwo extends Fragment {
    
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        
        // if this is set true,
        // Activity.onCreateOptionsMenu will call Fragment.onCreateOptionsMenu
        // Activity.onOptionsItemSelected will call Fragment.onOptionsItemSelected
        setHasOptionsMenu(true); 
        
        return null;
    }
    
    @Override
    public void onResume() {
        super.onResume();
        // destroy all menu and re-call onCreateOptionsMenu
        getActivity().invalidateOptionsMenu();
    }
    
    @Override
    public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
        super.onCreateOptionsMenu(menu, inflater);
        inflater.inflate(R.menu.menu_two, menu);
    }
    
    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch(item.getItemId()) {
        case R.id.menu_two :
            String message = "menu_two is selected";
            Toast.makeText(getActivity(), message, Toast.LENGTH_SHORT).show();
            break;
        }
        return super.onOptionsItemSelected(item);
    }
  
}



[ ActivityMain.java ]

public class ActivityMain extends Activity {
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
                
        ManagerNavTabs mnt = ManagerNavTabs.getInstance(this);
        mnt.addTab(R.string.fragment_one, FragmentOne.class);
        mnt.addTab(R.string.fragment_two, FragmentTwo.class);
    }

}



출처: http://gwpark.tistory.com/1993 [굉장히 사사로운 블로그]

반응형