2017-02-23 35 views
0

Butterknife运作良好工作时,我使用它的活动,但是当我试图使用它在一个片段不工作:Butterknife不是片段

public class SettingsFragment extends Fragment { 
private static final String TAG = "SettingsFragment"; 

@BindView(R.id.settings_email)  TextView _settingsMail; 
@BindView(R.id.settings_password) TextView _passwordMail; 
@BindView(R.id.settings_token)  TextView _tokenMail; 

@Nullable 
@Override 
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { 
    //returning our layout file 
    final View view = inflater.inflate(R.layout.fragment_3_settings, container, false); 
    ButterKnife.bind(this, view); 

    SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this.getContext()); 
    String email = prefs.getString("email", null); 
    String passwd = prefs.getString("password", null); 
    String token = prefs.getString("token", null); 
    _settingsMail.setText(email); 
    _passwordMail.setText(passwd); 
    _tokenMail.setText(token); 
    return inflater.inflate(R.layout.fragment_3_settings, container, false); 
} 
+0

为什么要退回报inflater.inflate(R.layout.fragment_3_settings,容器,FALSE);不应该只是这个简单的返回视图? –

回答

5

你必须返回view,你已经已经膨胀,再次膨胀另一种观点。

相反的:

return inflater.inflate(...); 

这样做:

return view; 
1

尝试等待,直到你知道这个观点已经改变布局之前已经完全构造。

@Override 
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { 
    //returning our layout file 
    final View view = inflater.inflate(R.layout.fragment_3_settings, container, false); 
    ButterKnife.bind(this, view); 
    return view; 
} 

@Override 
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { 
    super.onViewCreated(view, savedInstanceState); 

    SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this.getContext()); 
    String email = prefs.getString("email", null); 
    String passwd = prefs.getString("password", null); 
    String token = prefs.getString("token", null); 

    _settingsMail.setText(email); 
    _passwordMail.setText(passwd); 
    _tokenMail.setText(token); 
} 
0

这项工作对我来说:

... 

@BindView(R.id.text_input) 
TextView text_input; 

@Nullable 
@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
    View view = inflater.inflate(R.layout.fragment_home, container, false); 
    ButterKnife.bind(this, view); 
    return view; 
} 

@Override 
public void onActivityCreated(@Nullable Bundle savedInstanceState) { 
    super.onActivityCreated(savedInstanceState); 

    text_input.setText("Hello Lima, Perú"); 
...