Skip to content

Instantly share code, notes, and snippets.

@iamOgunyinka
Created September 2, 2016 19:08
Show Gist options
  • Save iamOgunyinka/48c0d2f4787d8c40dcdcc028dae7c562 to your computer and use it in GitHub Desktop.
Save iamOgunyinka/48c0d2f4787d8c40dcdcc028dae7c562 to your computer and use it in GitHub Desktop.
Menu not showing up in Fragment
<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:fitsSystemWindows="true">
<android.support.design.widget.AppBarLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:theme="@style/AppTheme.AppBarOverlay">
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="?attr/colorPrimary"
app:popupTheme="@style/AppTheme.PopupOverlay" />
</android.support.design.widget.AppBarLayout>
<include layout="@layout/content_crime" />
</android.support.design.widget.CoordinatorLayout>
package com.froist_inc.josh.criminalintent;
import android.annotation.TargetApi;
import android.app.Activity;
import android.content.Intent;
import android.os.Build;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.DialogFragment;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.NavUtils;
import android.text.Editable;
import android.text.TextWatcher;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.EditText;
import java.util.Date;
import java.util.UUID;
public class CrimeFragment extends Fragment {
private Crime mCrime;
public static final String EXTRA_ID =
"com.froist_inc.josh.criminalintent.crime_list_fragment.EXTRA_ID";
public static final int REQUEST_CODE = 0;
private Button mDateButton;
@Override
public void onCreate( Bundle savedInstanceState )
{
super.onCreate( savedInstanceState );
UUID position = ( UUID ) getArguments().getSerializable( EXTRA_ID );
mCrime = CrimeLab.get( getActivity() ).getCrime( position );
}
@Override
public void onCreateOptionsMenu( Menu menu, MenuInflater inflater )
{
inflater.inflate( R.menu.menu_list, menu );
super.onCreateOptionsMenu( menu, inflater );
}
@Override
public boolean onOptionsItemSelected( MenuItem item )
{
switch ( item.getItemId() )
{
case android.R.id.home:
if( NavUtils.getParentActivityName( getActivity() ) != null ){
NavUtils.navigateUpFromSameTask( getActivity() );
}
return true;
default:
return super.onOptionsItemSelected( item );
}
}
@TargetApi( 11 )
@Nullable
@Override
public View onCreateView( LayoutInflater inflater, @Nullable ViewGroup container,
@Nullable Bundle savedInstanceState )
{
final View view = inflater.inflate( R.layout.fragment_crime, container, false );
setHasOptionsMenu( true );
if( Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB ) {
if ( NavUtils.getParentActivityName( getActivity() ) != null ) {
getActivity().getActionBar().setDisplayHomeAsUpEnabled( true );
}
}
EditText titleView = ( EditText ) view.findViewById( R.id.crime_title );
titleView.setText( mCrime.getTitle() );
titleView.addTextChangedListener( new TextWatcher() {
@Override
public void beforeTextChanged( CharSequence s, int start, int count, int after )
{
}
@Override
public void onTextChanged( CharSequence s, int start, int before, int count )
{
mCrime.setTitle( s.toString() );
}
@Override
public void afterTextChanged( Editable s )
{
}
});
mDateButton = ( Button ) view.findViewById( R.id.crime_date );
mDateButton.setText( mCrime.getDate().toString() );
mDateButton.setOnClickListener( new View.OnClickListener() {
@Override
public void onClick( View v )
{
FragmentManager fragmentManager = getActivity().getSupportFragmentManager();
DialogFragment dialog = DatePickerDialog.newInstance( mCrime.getDate() );
dialog.setTargetFragment( CrimeFragment.this, CrimeFragment.REQUEST_CODE );
dialog.show( fragmentManager, "dialog_date" );
}
});
CheckBox solvedCheckBox = ( CheckBox ) view.findViewById( R.id.crime_solved );
solvedCheckBox.setChecked( mCrime.isSolved() );
solvedCheckBox.setOnCheckedChangeListener( new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged( CompoundButton buttonView, boolean isChecked ) {
mCrime.setSolved( isChecked );
}
});
return view;
}
@Override
public void onActivityResult( int requestCode, int resultCode, Intent data )
{
if( resultCode != Activity.RESULT_OK ) return;
if( requestCode == REQUEST_CODE )
{
Date date = ( Date ) data.getSerializableExtra( DatePickerDialog.EXTRA_DATE );
mCrime.setDate( date );
mDateButton.setText( mCrime.getDate().toString() );
}
}
public static CrimeFragment newInstance( UUID id )
{
Bundle extra = new Bundle();
extra.putSerializable( EXTRA_ID, id );
CrimeFragment newCrimeFragment = new CrimeFragment();
newCrimeFragment.setArguments( extra );
return newCrimeFragment;
}
}
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:tools="http://schemas.android.com/tools"
xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="@+id/menu_add_crime"
android:icon="@android:drawable/ic_menu_add"
android:title="@string/add_crime"
tools:ignore="AppCompatResource"
android:showAsAction="ifRoom|withText"
/>
<item
android:id="@+id/menu_food"
android:icon="@android:drawable/ic_notification_overlay"
android:title="@string/app_name"
android:showAsAction="withText"
tools:ignore="AppCompatResource"
/>
</menu>
package com.froist_inc.josh.criminalintent;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentStatePagerAdapter;
import android.support.v4.view.ViewPager;
import java.util.ArrayList;
import java.util.UUID;
public class ViewPagerActivity extends FragmentActivity
{
private ArrayList<Crime> mCrimes;
@Override
protected void onCreate( @Nullable Bundle savedInstanceState )
{
super.onCreate( savedInstanceState );
ViewPager viewPager = new ViewPager( this );
viewPager.setId( R.id.viewPage );
setContentView( viewPager );
mCrimes = CrimeLab.get( this ).getCrimes();
FragmentManager fm = getSupportFragmentManager();
viewPager.setAdapter( new FragmentStatePagerAdapter( fm ) {
@Override
public Fragment getItem( int position ) {
return CrimeFragment.newInstance( mCrimes.get( position ).getId() );
}
@Override
public int getCount() {
return mCrimes.size();
}
});
viewPager.addOnPageChangeListener( new ViewPager.OnPageChangeListener(){
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels)
{
}
@Override
public void onPageSelected(int position) {
setTitle( mCrimes.get( position ).getTitle() );
}
@Override
public void onPageScrollStateChanged(int state) {
}
});
UUID uid = ( UUID ) getIntent().getSerializableExtra( CrimeFragment.EXTRA_ID );
for ( int i = 0; i < mCrimes.size(); i++ ) {
if( mCrimes.get( i ).getId().equals( uid ) ){
viewPager.setCurrentItem( i );
break;
}
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment