2017-07-29 42 views
0

我的應用程序崩潰,我收到以下錯誤,如果我嘗試在我看來開DeatilFragement:Android的細節片段

Caused by: java.lang.IllegalStateException: Required view 'login' with ID 2131558406 for field 'login' was not found. If this view is optional add '@Nullable' (fields) or '@Optional' (methods) annotation. at butterknife.internal.Utils.findRequiredView(Utils.java:92) at butterknife.internal.Utils.findRequiredViewAsType(Utils.java:104) at de.dev.myapp.ui.quote.ArticleDetailFragment_ViewBinding.(ArticleDetailFragment_ViewBinding.java:23) at java.lang.reflect.Constructor.newInstance0(Native Method) at java.lang.reflect.Constructor.newInstance(Constructor.java:430) at butterknife.ButterKnife.createBinding(ButterKnife.java:199) at butterknife.ButterKnife.bind(ButterKnife.java:172) at de.dev.myapp.ui.base.BaseFragment.inflateAndBind(BaseFragment.java:29) at de.dev.myapp.ui.quote.ArticleDetailFragment.onCreateView(ArticleDetailFragment.java:69)

ArticleDetailFragment_ViewBinding是指這條線:

public ArticleDetailFragment_ViewBinding(ArticleDetailFragment target, View source) { 
    this.target = target; 

    target.login = Utils.findRequiredViewAsType(source, R.id.login, "field 'login'", TextView.class); 

BaseFragment指這線:

public View inflateAndBind(LayoutInflater inflater, ViewGroup container, int layout) { 
    View view = inflater.inflate(layout, container, false); 
    ButterKnife.bind(this, view); // this line 

    LogUtil.logD(TAG, ">>> view inflated"); 
    return view; 
} 

而ArticleDetailFragment指這條線:

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
    View rootView = inflateAndBind(inflater, container, R.layout.fragment_article_detail); // this line 

    if (!((BaseActivity) getActivity()).providesActivityToolbar()) { 
     // No Toolbar present. Set include_toolbar: 
     ((BaseActivity) getActivity()).setToolbar((Toolbar) rootView.findViewById(R.id.toolbar)); 
    } 

    if (dummyItem != null) { 
     loadBackdrop(); 
     collapsingToolbar.setTitle(dummyItem.title); 
     author.setText(dummyItem.author); 
     quote.setText(dummyItem.content); 
    } 

    return rootView; 
} 

而且這是我的選擇每個項目移動到詳細信息頁面

@Override 
    public void onItemSelected(String id) { 
     if (twoPaneMode) { 
      // Show the quote detail information by replacing the DetailFragment via transaction. 
      ArticleDetailFragment fragment = ArticleDetailFragment.newInstance(id); 
      getFragmentManager().beginTransaction().replace(R.id.article_detail_container, fragment).commit(); 
     } else { 
      // Start the detail activity in single pane mode. 
      Intent detailIntent = new Intent(this, ArticleDetailActivity.class); 
      detailIntent.putExtra(ArticleDetailFragment.ARG_ITEM_ID, id); 
      startActivity(detailIntent); 
     } 
    } 

回答

1

這是你的錯誤:

java.lang.IllegalStateException: 
    Required view 'login' with ID 2131558406 for field 'login' was not found. 
    If this view is optional add '@Nullable' (fields) or '@Optional' (methods) 

這意味着,它是非常有可能的是你的ArticleDetailFragment包括以下行:

@BindView(R.id.login) 
private View login; 

問題是您的片段佈局中沒有屬性android:id="@+id/login"的視圖。請添加此視圖(或更正其id屬性),或將您的View標記爲@Nullable

+0

感謝您加入'@ Nullable' – utdev