Android サポート ライブラリ - 25.0.0 から新しくリリースされた Bottom Navigation View を使用しています。そして、私は onNavigationItemSelectedListener を設定しようとしていますが、何も起こりません。プロジェクトをデバッグしようとすると、「No such instance field: 'bottomNavigationView'」というエラーが表示されますが、bottomNavigationView は初期化され、メソッド「getMaxItemCount」は完全に機能します。
「navigationListener」の問題だけでなく、onClickListenerの問題でもあることに気付きました。このコードのため:
bottomNavigationView = (BottomNavigationView) viewHierarchy.findViewById(R.id.tender_bottom_navigation);
bottomNavigationView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Toast toast = Toast.makeText(getActivity(), "clicky-clicky", Toast.LENGTH_LONG);
toast.show();
}
});
も同じエラーを提供します。ここのブール値で同じ間違いをサイトで見ましたが、これに対する最も一般的な答えは「Androidスタジオを再起動する/プロジェクトをクリーンアップする」でした。私はそれをやった。これについて何か考えはありますか?
フラグメント内に bottomNavigationView を実装する方法はないのでしょうか?
編集:アクティビティクラスでこのコードを試してみましたが、うまくいきます! では、なぜ彼はフラグメントのフィールドを失うのでしょうか? それは今でも私にとって謎です。
編集 2:フラグメント コード全体。
public class NewTenderFragment extends Fragment {
BottomNavigationView bottomNavigationView;
FragmentManager fragmentManager;
FragmentTransaction fragmentTransaction;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View viewHierarchy = inflater.inflate(R.layout.fragment_new_tender, container, false);
bottomNavigationView = (BottomNavigationView) viewHierarchy.findViewById(R.id.tender_bottom_navigation);
int t = bottomNavigationView.getMaxItemCount(); //this returns "5"
bottomNavigationView.setOnClickListener(new View.OnClickListener() { //this returns such error
@Override
public void onClick(View view) {
Toast toast = Toast.makeText(getActivity(), "clicky-clicky", Toast.LENGTH_LONG);
toast.show();
}
});
return viewHierarchy;
}