2017-02-23 52 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ú"); 
...