2016-06-04 3 views
0

В моем приложении у меня есть каждое действие с ящиком, но когда я устанавливаю ящик в своей деятельности Preference, моя работа работает нормально, но ящик не появляется.Как настроить навигационный ящик в предпочтенииАктивность

вот мой код ..

public class SettingActivity extends PreferenceActivity implements NavigationView.OnNavigationItemSelectedListener { 
private AppCompatDelegate mDelegate; 

private NavigationView mDrawer; 
private DrawerLayout mDrawerLayout; 
private ActionBarDrawerToggle mDrawerToggle; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    getDelegate().installViewFactory(); 
    getDelegate().onCreate(savedInstanceState); 

    getSupportActionBar().setDisplayShowHomeEnabled(true); 
    getSupportActionBar().setDisplayHomeAsUpEnabled(true); 
    super.onCreate(savedInstanceState); 

    if(savedInstanceState == null){ 
     android.app.Fragment infoFragment = new MyPreferenceFragment(); 
     FragmentTransaction ft = getFragmentManager().beginTransaction(); 
     ft.add(R.id.fragment_container, infoFragment); 
     ft.commit(); 
    } 

} 

public static class MyPreferenceFragment extends PreferenceFragment { 

    private AppSettings settings; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     addPreferencesFromResource(R.xml.pref); 
     Preference ringtonePrefs = findPreference("ringPref"); 
     ringtonePrefs.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() { 
      @Override 
      public boolean onPreferenceChange(Preference preference, Object newValue) { 
       preference.setSummary(String.valueOf(newValue)); 
       return true; 
      } 
     }); 

     Preference mapTypePrefs = findPreference("mapPref"); 
     mapTypePrefs.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() { 
      @Override 
      public boolean onPreferenceChange(Preference preference, Object newValue) { 
       preference.setSummary(String.valueOf(newValue)); 
       return true; 
      } 
     }); 
    } 

    @Override 
    public void onActivityCreated(Bundle savedInstanceState) { 
     super.onActivityCreated(savedInstanceState); 
     settings = AppSettings.getSettings(getActivity()); 
     Preference ringtonPrefs = findPreference("ringPref"); 
     ringtonPrefs.setSummary(settings.getRingtone()); 

     Preference maptypePrefs = findPreference("mapPref"); 
     maptypePrefs.setSummary(settings.getMapType()); 
    } 

    @Override 
    public void onPause() { 
     super.onPause(); 
     getPreferenceScreen().getSharedPreferences().unregisterOnSharedPreferenceChangeListener(sharedPrefsChangeListener); 
    } 

    @Override 
    public void onResume() { 
     super.onResume(); 
     getPreferenceScreen().getSharedPreferences().registerOnSharedPreferenceChangeListener(sharedPrefsChangeListener); 
    } 

    private final SharedPreferences.OnSharedPreferenceChangeListener sharedPrefsChangeListener = new SharedPreferences.OnSharedPreferenceChangeListener() { 
     @Override 
     public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) { 
      settings.load(); 
     } 
    }; 

} 

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    if (item.getItemId() == android.R.id.home) { 
     finish(); 
     return true; 
    } 
    return false; 
} 

@Override 
protected void onPostCreate(Bundle savedInstanceState) { 
    super.onPostCreate(savedInstanceState); 
    getDelegate().onPostCreate(savedInstanceState); 

} 

public android.support.v7.app.ActionBar getSupportActionBar() { 
    return getDelegate().getSupportActionBar(); 
} 

public void setSupportActionBar(@Nullable Toolbar toolbar) { 
    getDelegate().setSupportActionBar(toolbar); 
} 

@Override 
public MenuInflater getMenuInflater() { 
    return getDelegate().getMenuInflater(); 
} 

@Override 
public void setContentView(@LayoutRes int layoutResID) { 
    getDelegate().setContentView(layoutResID); 
} 

@Override 
public void setContentView(View view) { 
    getDelegate().setContentView(view); 
    setContentView(view, new DrawerLayout.LayoutParams(DrawerLayout.LayoutParams.MATCH_PARENT, DrawerLayout.LayoutParams.MATCH_PARENT)); 
} 

@Override 
public void setContentView(View view, ViewGroup.LayoutParams params) { 
    getDelegate().setContentView(view, params); 
    super.setContentView(R.layout.navigation_view); 

    setupDrawer(); 

    mDrawerLayout.addDrawerListener(mDrawerToggle); 
    mDrawerLayout.post(new Runnable() { 
     @Override 
     public void run() { 
      mDrawerToggle.syncState(); 
     } 
    }); 
} 

@Override 
public void addContentView(View view, ViewGroup.LayoutParams params) { 
    getDelegate().addContentView(view, params); 
} 

@Override 
protected void onPostResume() { 
    super.onPostResume(); 
    getDelegate().onPostResume(); 
} 

@Override 
protected void onTitleChanged(CharSequence title, int color) { 
    super.onTitleChanged(title, color); 
    getDelegate().setTitle(title); 
} 

@Override 
public void onConfigurationChanged(Configuration newConfig) { 
    super.onConfigurationChanged(newConfig); 
    getDelegate().onConfigurationChanged(newConfig); 
} 

@Override 
protected void onStop() { 
    super.onStop(); 
    getDelegate().onStop(); 
} 

@Override 
protected void onDestroy() { 
    super.onDestroy(); 
    getDelegate().onDestroy(); 
} 

public void invalidateOptionsMenu() { 
    getDelegate().invalidateOptionsMenu(); 
} 

private AppCompatDelegate getDelegate() { 
    if (mDelegate == null) { 
     mDelegate = AppCompatDelegate.create(this, null); 
    } 
    return mDelegate; 
} 

private void setupDrawer() { 
    assert getSupportActionBar() != null; 
    getSupportActionBar().setDisplayHomeAsUpEnabled(true); 
    getSupportActionBar().setDisplayShowHomeEnabled(true); 
    mDrawer = (NavigationView) findViewById(R.id.mNavDrawer); 
    assert mDrawer != null; 
    mDrawer.setNavigationItemSelectedListener(this); 
    mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout); 
    mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout, 
      R.string.DrawerOpen, 
      R.string.DrawerClose){ 
     public void onDrawerClosed(View view) { 
      super.onDrawerClosed(view); 
      invalidateOptionsMenu(); // creates call to onPrepareOptionsMenu() 
     } 
     public void onDrawerOpened(View drawerView) { 
      super.onDrawerOpened(drawerView); 
      invalidateOptionsMenu(); // creates call to onPrepareOptionsMenu() 
     } 

    }; 

    mDrawerLayout.addDrawerListener(mDrawerToggle); 
    mDrawerToggle.syncState(); 
} 

@Override 
public boolean onNavigationItemSelected(MenuItem item) { 
    Intent intent = null; 
/* if (item.getItemId() == R.id.navigation_item_1) { 
     mDrawerLayout.closeDrawer(GravityCompat.START); 
     intent = new Intent(MapsActivity.this, LocationList.class); 
     intent.putExtra("longitude_key", longitude); 
     intent.putExtra("latitude_key", latitude); 
     intent.putExtra("place_name", placeName); 
     intent.putExtra("place_address", address); 
     startActivity(intent); 
     return true; 
    }*/ 
    if (item.getItemId() == R.id.navigation_item_2) { 
     mDrawerLayout.closeDrawer(GravityCompat.START); 
     intent = new Intent(this, AboutUs.class); 
     startActivity(intent); 
     return true; 
    } 
    if (item.getItemId() == R.id.navigation_item_3) { 
     mDrawerLayout.closeDrawer(GravityCompat.START); 
     intent = new Intent(this, Help.class); 
     startActivity(intent); 
     return true; 
    } 
    if(item.getItemId() == R.id.navigation_item_4){ 
     mDrawerLayout.closeDrawer(GravityCompat.START); 
     Intent i = new Intent(this, SettingActivity.class); 
     startActivity(i); 
     return true; 
    } 
    mDrawerLayout.closeDrawers(); 
    return true; 
} 

}

это мой navigation_view.xml

<?xml version="1.0" encoding="utf-8"?> 
<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    android:id="@+id/drawer_layoutS" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 

    <FrameLayout 
     android:id="@+id/fragment_container" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent"></FrameLayout> 

    <android.support.design.widget.NavigationView 
     android:id="@+id/mNavDrawerS" 
     android:layout_width="wrap_content" 
     android:layout_height="match_parent" 
     android:layout_gravity="start" 
     app:itemIconTint="@color/ColorAccent" 
     app:itemTextColor="@color/TextColor.DarkGray" 
     app:headerLayout="@layout/drawer_header" 
     app:menu="@menu/menu_drawer"/> 

</android.support.v4.widget.DrawerLayout> 

пожалуйста, скажите мне, что им не хватает здесь .. скажите мне любой другой путь сделать это.

ответ

2

В наименьшем hiearchical макете вашей деятельности (content_main по умолчанию) добавьте FrameLayout с именем fragment_container. Установите ширину и высоту в match_parent. Хитрость здесь, чтобы создать свой фрагмент, как это:

getFragmentManager() 
.beginTransaction()       
.replace(R.id.fragment_container, new MyFragment()) 
.commit(); 

Таким образом, вы в основном не добавить фрагмент к экрану, вы просто заменить предопределенный макет с фрагментом. Это предотвращает проблемы, связанные с ящиком и панелью инструментов. Если нет, сообщите мне, чтобы я мог продолжить расследование.

+0

u означало, что мне нужно передать мой макет ящика вместо предопределенного макета прямо –

+0

Какое расположение вы используете для своей предпочтения? По умолчанию это должны быть activity_main, app_bar_main и content_main. –

+0

Я не использую activity_main, ни app_bar_main, ни content_main –

 Смежные вопросы

  • Нет связанных вопросов^_^