2016-04-13 2 views
0

Я делаю BaseActivity и я переопределить setContentView и это BaseActivity кодпанель навигации во всех видах деятельности onNavigationItemSelected случае не работает

public class BaseActivity extends AppCompatActivity implements NavigationView.OnNavigationItemSelectedListener { 

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

    } 

    @Override 
    public void setContentView(int layoutResID) 
    { 
     DrawerLayout fullView = (DrawerLayout) getLayoutInflater().inflate(R.layout.activity_base, null); 
     FrameLayout activityContainer = (FrameLayout) fullView.findViewById(R.id.activity_content); 
     getLayoutInflater().inflate(layoutResID, activityContainer, true); 
     super.setContentView(fullView); 
    } 

    @Override 
    public boolean onNavigationItemSelected(MenuItem item) { 
     Log.i("NAV","nav selected"); 
     DrawerLayout drawer = (DrawerLayout) findViewById(R.id.activity_container); 
     drawer.closeDrawer(GravityCompat.START); 
     return true; 
    } 

} 

и XML в BaseActivity, как это

<android.support.v4.widget.DrawerLayout 
    android:id="@+id/activity_container" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto"> 
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:orientation="vertical"> 

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

    </LinearLayout> 

    <android.support.design.widget.NavigationView 
     android:id="@+id/navigationView" 
     android:layout_width="wrap_content" 
     android:layout_height="match_parent" 
     android:layout_gravity="start" 
     app:menu="@menu/activity_side_menu_drawer"/> 

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

и на MainActivity i расширяет эту базу как это

public class MainActivity extends BaseActivity{ 

} 

на самом деле навигация выглядит хорошо, но onNavigationItemSelected не работает!

Я пытался использовать журнал или тост Ничего не работает что не так?

благодарит заранее.

+0

Где вы называете 'setNavigationItemSelectedListener'? –

+0

на BaseActivity .. так что все действия должны работать одинаково – Macnux

+0

Затем введите код для этого. Как мы можем помочь вам, если вы разместите половину кода? –

ответ

0

Необходимо позвонить по телефону setNavigationItemSelectedListener.

Этот метод должен быть вызван на вашем NavigationView

начать получать ваш NavigationView с findViewById(R.id.navigationView)

Наконец называют navigationView.setNavigationItemSelectedListener(this)

Это покажет ваш взгляд навигации, что слушатели для выбранного элемента является BaseActivity

+0

это сработало спасибо – Macnux

+0

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

+0

Вы можете создать абстрактный метод для своей основной деятельности. Сделайте другие действия переопределением этого метода, а затем просто вызовите этот метод. У каждого вида деятельности будет своя реализация этого метода –

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