2017-06-26 2 views
0

私はButterknifeでいくつかのビューをバインドしますが、何とか動作しません。私が得た 例外は、基本的に、彼はビューを見つけることができないと言われナビゲーションヘッダーと組み合わせてButterknifeを使用するには?

java.lang.IllegalStateException: Required view 'full_name_nav'

です。だから、私は間違った位置にバインドしていると思うが、どこで正しく行うべきかわからない。 NavigationViewにNavigation Header Layoutを組み込み、これらのビューをoncreateメソッドにバインドします。

マイコード:活動の

XMLレイアウト:私は実際にビューをバインドナビゲーションヘッダー

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:app="http://schemas.android.com/apk/res-auto" 
android:layout_width="match_parent" 
android:layout_height="@dimen/nav_header_height" 
android:background="@drawable/side_nav_bar" 
android:gravity="bottom" 
android:orientation="vertical" 
android:paddingBottom="@dimen/activity_vertical_margin" 
android:paddingLeft="@dimen/activity_horizontal_margin" 
android:paddingRight="@dimen/activity_horizontal_margin" 
android:paddingTop="@dimen/activity_vertical_margin" 
android:theme="@style/ThemeOverlay.AppCompat.Dark"> 

<ImageView 
    android:id="@+id/imageView" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:paddingTop="@dimen/nav_header_vertical_spacing" 
    app:srcCompat="@android:drawable/sym_def_app_icon" /> 

<TextView 
    android:id="@+id/user_name_nav" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:paddingTop="@dimen/nav_header_vertical_spacing" 
    android:textAppearance="@style/TextAppearance.AppCompat.Body1" /> 

<TextView 
    android:id="@+id/full_name_nav" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" /> 

<TextView 
    android:id="@+id/motorcycle_model_nav" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content"/> 

</LinearLayout> 

私の主な活動の

<?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" 
xmlns:tools="http://schemas.android.com/tools" 
android:id="@+id/drawer_layout" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:fitsSystemWindows="true" 
tools:openDrawer="start"> 

<include 
    layout="@layout/app_bar_main" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" /> 

<android.support.design.widget.NavigationView 
    android:id="@+id/nav_view" 
    android:layout_width="wrap_content" 
    android:layout_height="match_parent" 
    android:layout_gravity="start" 
    android:fitsSystemWindows="true" 
    app:headerLayout="@layout/nav_header_main" <!-- Including the Navigation Header here--> 
    app:menu="@menu/activity_main_drawer" /> 

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

XMLレイアウト:

public class MainActivity extends AppCompatActivity 
    implements NavigationView.OnNavigationItemSelectedListener { 

@BindView(R.id.full_name_nav) 
TextView navigationName; 

@BindView(R.id.motorcycle_model_nav) 
TextView navigaitonMotorcycle; 

@BindView(R.id.user_name_nav) 
TextView navigationUsername; 


SharedPreferences prefs; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    prefs = this.getSharedPreferences(
      "package", Context.MODE_PRIVATE); 

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


    ButterKnife.bind(this); // Calling ButterKnife here 


    setNavInfo(); 
    DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); 
    ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
     this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close){ 

    /** Called when a drawer has settled in a completely closed state. */ 
    public void onDrawerClosed(View view) { 
     super.onDrawerClosed(view); 
    } 

    /** Called when a drawer has settled in a completely open state. */ 
    public void onDrawerOpened(View drawerView) { 
     super.onDrawerOpened(drawerView); 
     } 
    }; 

    drawer.setDrawerListener(toggle); 
    toggle.syncState(); 

    NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view); 
    navigationView.setNavigationItemSelectedListener(this); 
} 

答えて

0

I ViewBindingをOnCreateOptionsMenuに実装しました。今すぐ動作します。

関連する問題